2016-11-04 9 views
0

Ich habe begonnen, Seite Fabrik verwenden, und jetzt muss ich XPath in @FindBy bereitstellen. Es wird großartig sein, wenn jemand einen Vorschlag oder eine Referenz darüber geben kann, wie man eine Variable in xpath mit @Findby übergeben kann.Iterate durch alle Elemente xpath mit @Findby in Java

Element, das ich mit @Findby Anmerkung

for(i=1; i <= liElements.size(); i++) { 
    WebElement linkElement = driver.findElement(By.xpath("//li[" + i + "]/div//a[contains(@class, 'btn-mini')]")); 
    linkElement.click(); 
} 

Vielen Dank im Voraus für Ihre Hilfe ersetzen möchten.

+0

Von Ihrem Beitrag ist es nicht das Kernproblem herausragen. Würden Sie bitte klären, wenn Sie einen Fehler oder Beispiel-HTML finden, die Sie versuchen zu finden? – Rao

+0

Ich möchte meinen Code durch @FindBy Annotation ersetzen. Ich bin mir nicht sicher, wie ich es erreichen kann. – user16165

+0

Können Sie bitte das Beispiel [hier] (https://github.com/SeleniumHQ/selenium/wiki/PageFactory) überprüfen und sehen, ob das hilfreich ist? – Rao

Antwort

2

In Bezug auf Ihre Frage zu parametrisierten FindBy - das ist nicht möglich, da Annotationen konstante Werte sind. Werfen Sie einen Blick hier - Can the annotation variables be determined at runtime?

In diesem speziellen Fall, dass Sie eine Liste der Elemente in FindBy finden:

@FindBy(xpath = "//li/div//a[contains(@class, 'btn-mini')]") 
private List<WebElement> links; 

Dann können Sie durchlaufen sie wie folgt aus: Sie

for(WebElement link : links) { 
    link.click(); 
} 

So Klicken Sie nacheinander auf die Links, die von diesem xPath gefunden wurden.

+0

Erstaunlich, vielen Dank. Ich habe genau danach gesucht :-) Ich werde diesen Code benutzen und das Ergebnis wissen lassen. – user16165

+0

Kühl. Lass es mich wissen, wie es für dich funktioniert. – Ievgen

+0

Sieht aus '@FindBy (xpath =" // li/div // a [enthält (@class, 'btn-mini')] ") muss geändert werden in' @FindBy (xpath = "// li/div/a [enthält (@class, 'btn-mini')] ")'? Bitte überprüfen Sie erneut. – Rao