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;
你的理解有误。
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 任何东西.
据我了解,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;
你的理解有误。
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 任何东西.