我目前正在学习页面对象模型(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'
元素。
答案 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。