2015-07-01 6 views
6

per esempio,Trova un elemento all'interno dell'elemento usando @FindBy Annotation.

WebElement parentEle = driver.findElement(By.id("xyz")); 
WebElement childEle = parentEle.findElement(By.id("abc")); 
childEle.click(); 

Nell'esempio di cui sopra, stiamo trovando childEle con in Parentèle. Come possiamo ottenere ciò usando l'annotazione @FindBy (in congiunzione con PageFactory)

risposta

1

Prima di tutto perché è necessario trovare un figlio da un genitore se il bambino ha un ID UNICO? Lo scopo principale di id è fornire la flessibilità di trovare l'elemento con un selettore unico.

Nel caso in cui l'elemento figlio sia realmente annidato ad altro, lo trovi con xpath. Lo uso spesso.

@FindBy(how = How.XPATH, using = "//something/something") 
private WebElement TestElement; 

O con ID

@FindBy(how = How.ID, using = "abc") 
private WebElement TestElement; 
+3

Grazie per la risposta Saifur. Capisco. Quando stiamo andando per id, possiamo trovarlo direttamente. Ma ho appena citato come esempio. Lemme spiega il mio scenario. Ho più tag li con nomi di classi uguali ma valori diversi. E ogni li ha i loro figli. Quindi ho bisogno di ottenere il tag genitore (li qui) e lavorare sui suoi elementi figli. Posso ottenere questo risultato con la normale modalità findElement, ma mi piacerebbe sapere come possiamo farlo usando le annotazioni @FIndBy. Risposta Plz. – ram

0
@FindBy (id = "abc") 
private WebElement TestElement; 

Nella fabbrica pagina di provare questo e chiamare quel metodo dal metodo di prova.

public WebElement Child_Of_ParentElement(WebElement TestElement, String Child_Id) 
{ 
    return TestElement.findElement(By.id(Child Id)); 
} 
0

Ciò può essere ottenuto in un paio di passaggi:

//identify parent element with @FindBy annotation 
    1) @FindBy(className="locator") 
     List<WebElement> parent; 

//loop through each parent to get child(<li> in your case) of each parent  
    2) for(WebElement list_items:Parent){ 
     list_items.findElement(By.xpath("child locator")); 

avevo usato questo approccio ed è stato in grado di ottenere i risultati desiderati. Spero che questo spieghi anche la tua domanda.

0

Come indicato in altre risposte, utilizzerei xpath anche se dovresti riscrivere il percorso di root per ogni elemento figlio, a meno che non crei una costante di stringa o qualcosa che potrebbe iniziare a diventare disordinato.

// Child 1 
@FindBy(xPath = "//[@id='xyz']/[@id='abc']"; 
private WebElement childAbcOfParentXyz; 
// Child 2 
@FindBy(xPath = "//[@id='xyz']/[@id='def']"; 
private WebElement childDefOfParentXyz; 
Problemi correlati