首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >页面工厂@FindBy

页面工厂@FindBy
EN

Stack Overflow用户
提问于 2015-07-23 20:15:09
回答 3查看 17.7K关注 0票数 3

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

我拥有的是:

代码语言:javascript
复制
driver.findElement(By.cssSelector("a[dta-qid='inventory']");

因此,我的问题是如何正确地将a[da-qid='inventory']放在@FindBy中?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-23 21:04:58

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

代码语言:javascript
复制
@FindBy(css="a[da-qid='inventory']")
List<WebElement> elements;

只是别忘了在da-qid='inventory'dta-qid='inventory'之间做出正确的选择

票数 1
EN

Stack Overflow用户

发布于 2015-07-23 20:42:10

你为什么不通读呢?如果使用多么 Enum,使用@FindsBy更容易。在这种情况下你有多种选择。使用cssSelector时,它应该如下所示

代码语言:javascript
复制
@FindBy(how = How.css, using = "a[dta-qid='inventory']") 
WebElement foobar;
票数 2
EN

Stack Overflow用户

发布于 2015-07-24 01:40:17

您可以使用XPath选择器:

代码语言:javascript
复制
driver.findElement(By.xpath("//a[contains(@da-qid,'inventory')]");

代码语言:javascript
复制
@FindBy(xpath = "//a[contains(@da-qid,'inventory')]")
WebElement inventoryLink;

分别

代码语言:javascript
复制
@FindAll(xpath = "//a[contains(@da-qid,'inventory')]")
List<WebElement> inventoryLinks;

理论上,XPath "//a[startsWith(@da-qid,'inventory')]"也存在,但对我来说并不适用于所有WebDrivers。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31597226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档