FindBys 和 List<WebElement> 总是 return 空列表

FindBys and List<WebElement> always return null list

据我了解,pagefactory 中的 FindBys Annotation returns 元素满足里面提到的所有条件。下面的代码总是 returns 0 个元素。

同样,如果我使用具有相同 ID 和 Xpath 属性的 FindAll 注释,它会返回 2 个 Web 元素。谁能帮助我理解结果。

 @FindBys
 (   
   {
    @FindBy(xpath="//*[@id='ctl00_ctl00_divWelcome']"),
    @FindBy(id="ctl00_ctl00_divWelcome")
    
   }
   )
 public List<WebElement> allElementsInList;

你的理解有误。

documentation for @FindBy 说:

Used to mark a field on a Page Object to indicate that lookup should use a series of @FindBy tags in a chain as described in org.openqa.selenium.support.pagefactory.ByChained

此外,documentation for ByChained 说:

Mechanism used to locate elements within a document using a series of other lookups. This class will find all DOM elements that matches each of the locators in sequence, e.g. driver.findElements(new ByChained(by1, by2)) will find all elements that match by2 and appear under an element that matches by1.

因此,在您的示例中,您正在通过具有特定 ID 的 XPath 查找元素,然后通过相同的 ID 查找其子元素......当然,这不会 return 任何东西.