WebDriver PageFactory查找元素列表

时间:2015-01-30 19:59:05

标签: java selenium-webdriver webdriver pageobjects

我在页面上有多个元素,我想使用PageFactory初始化它们。

我尝试使用以下

@FindBy(xpath = "//*[contains(@class,'x-grid-tree-node-leaf')]")    
    List<WebElement> allElements;

但这只返回一个元素。

现在,如果我使用传统的方式来寻找元素

List<WebElement> allElements = driver.findElements(By.xpath("//*[contains(@class,'x-grid-tree-node-leaf')]"));

这会返回4个元素

任何指针可能是什么问题?

4 个答案:

答案 0 :(得分:1)

使用 FindAll 注释获取系列@FindBy标记,并搜索符合任何FindBy标准的所有元素。

@FindAll(@FindBy(how = How.XPATH, using = "//*[contains(@class,'x-grid-tree-node-leaf')]"))
List<WebElement> allElements;

答案 1 :(得分:1)

@FindBy(xpath = "//*[contains(@class,'x-grid-tree-node-leaf')]")    
List<WebElement> allElements;
这是有效的。我的代码中有错误。

答案 2 :(得分:0)

使用@FindAllBy注释,而不是使用@FindBy注释。试试这个!

@FindAllBy(xpath = "//*[contains(@class,'x-grid-tree-node-leaf')]")    
List<WebElement> allElements;

这里是FindAllBy java类的link

答案 3 :(得分:-1)

您是否尝试在Chrome开发者工具或Firebug中运行xpath?

List<WebElement> allElements = driver.findElements(By.xpath("//*[contains(@class,'x-grid-tree-node-leaf')]"));

应该有用。