2016-11-04 160 views
0

我已經開始使用Page工廠,現在我需要在@FindBy中提供xpath。如果有人能夠提供任何關於如何使用@Findby在xpath中傳遞變量的建議或參考,那將會很棒。在java中使用@Findby遍歷所有元素xpath

元,我想與@Findby註釋更換

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

非常感謝提前對你的幫助。

+0

從您的文章中,它並不突出核心問題。請您澄清一下,如果您發現任何錯誤或您試圖找到的示例html? – Rao

+0

我想用@FindBy註釋替換我的代碼。我不知道我怎麼能實現它。 – user16165

+0

你可以檢查示例[這裏](https://github.com/SeleniumHQ/selenium/wiki/PageFactory),看看這是否有幫助? – Rao

回答

2

關於圍繞參數化FindBy的問題 - 這是不可能的,因爲註釋是常量值。看看這裏 - Can the annotation variables be determined at runtime?

在這種特殊情況下,你可以找到在FindBy的元素列表:

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

然後你可以遍歷它們是這樣的:

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

所以你將點擊該xPath找到的鏈接。

+0

令人驚歎,非常感謝。我正在尋找這個:-)我會用這個代碼讓你知道結果。 – user16165

+0

很酷。當然,讓我知道它是如何爲你工作的。 – Ievgen

+0

看起來@FindBy(xpath =「// li/div // a [包含(@class,'btn-mini')]」)'需要更改爲'@FindBy(xpath =「// li/div/a [包含(@class,'btn-mini')]「)'?請重新檢查。 – Rao