-1

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

同样,如果我使用具有相同 id 和 Xpath 属性的 FindAll 注释,它将返回我 2 个 web 元素。任何人都可以帮助我理解结果。

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

4

1 回答 1

1

你的理解是错误的。

@FindBy的文档说:

用于标记页面对象上的字段以指示查找应使用@FindBy中的一系列标签,如 org.openqa.selenium.support.pagefactory.ByChained 中所述

此外,ByChained 的文档说:

用于使用一系列其他查找在文档中定位元素的机制。此类将按顺序查找与每个定位器匹配的所有 DOM 元素,例如,driver.findElements(new ByChained(by1, by2))将查找与 by2 匹配并出现在与 by1 匹配的元素下的所有元素。

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

于 2017-09-19T17:22:47.663 回答