页面工厂@FindBy

时间:2015-07-23 20:15:09

标签: selenium css-selectors pageobjects

我目前正在学习页面对象模型(POM),我正在尝试使用@FindBy访问特定的Web元素,但我不确定如何正确地将我的元素的语法写入@FindBy?

我拥有的是:

driver.findElement(By.cssSelector("a[dta-qid='inventory']");

所以我的问题是如何正确地将a[da-qid='inventory']放入@FindBy?

a[da-qid='inventory'],我的意思是它选择<a>值以da-qid开头的每个'inventory'元素。

3 个答案:

答案 0 :(得分:1)

如果您假设使用此选择器可以找到多个元素,请尝试以下操作:

@FindBy(css="a[da-qid='inventory']")
List<WebElement> elements;

不要忘记在da-qid='inventory'dta-qid='inventory'

之间正确选择

答案 1 :(得分:0)

为什么不通读this?如果使用How Enum执行此操作,则更容易使用@FindsBy。在这种情况下,您有多个选项。使用cssSelector它应该看起来像这样

@FindBy(how = How.css, using = "a[dta-qid='inventory']") 
WebElement foobar;

答案 2 :(得分:0)

您可以使用XPath选择器:

@FindBy(xpath = "//a[contains(@da-qid,'inventory')]")
WebElement inventoryLink;

@FindAll(xpath = "//a[contains(@da-qid,'inventory')]")
List<WebElement> inventoryLinks;
分别

"//a[startsWith(@da-qid,'inventory')]"

从理论上讲,XPath {{1}}也存在,但它并不适用于所有WebDrivers。