我是selenium的新手,我在使用WebDriver(用Java)在网页上找到特定元素时遇到了麻烦 . 我试图引用的特定元素是链接,但没有任何ID /其他XML属性与它们相关联 . 我无权访问HTML源代码,因此无法向元素添加任何标识符 . 我不确定使用FindBy函数可以做什么和不可以做什么,所以有人可以看看HTML并告诉我如何找到指定的元素(最终目标是使用WebElement.Click ()方法就可以了) .
<div class="col-md-12">
<h3>My Registered Cards</h3>
<div id="cards" class="row list-group">
<div>
THIS LINE
<a href="/website/carddetails?cardnumber=1">
THIS LINE
<div class="tile col-md-3 img-rounded">
<div class="tile-inner">
<img class="group list-group-image col-md-12 hidden-xs hidden-sm" src="http://placehold.it/200x100/000/fff" alt="">
<div>
<div class="row">
<h4 class="group inner list-group-tile-heading col-xs-12 col-md-12">Card Name</h4>
</div>
</div>
</div>
</div>
</a>
</div>
<div>
THIS LINE
<a href="/website/carddetails?cardnumber=2">
THIS LINE
<div class="tile col-md-3 img-rounded">
<div class="tile-inner">
<img class="group list-group-image col-md-12 hidden-xs hidden-sm" src="http://placehold.it/200x100/000/fff" alt="">
<div>
<div class="row">
<h4 class="group inner list-group-tile-heading col-xs-12 col-md-12">Card Name</h4>
</div>
</div>
</div>
</div>
</a>
</div>
</div>
</div>
我已经尝试过几种不同的方式,但WebDriver在两种情况下都找不到正确的元素 .
@FindBy(linkText = "Card Name")
public List<WebElement> cards;
和
@FindBy(xpath = "//div[@id='cards']/div/@a")
public List<WebElement> cards;
编辑:感谢SiKing不完全是我正在寻找的答案,但你确实指出了我正确的方向 .
我实际上最终做的是
@FindBy(xpath = "//div[@id='cards']/div/a")
public List<WebElement> cards;
如果不清楚,我想要做的是获取网站上所有卡片(特别是卡片链接)的列表,然后我可以按顺序点击
1 回答
选择器
什么都不会找到,因为它会查找
a
标签中包含的文本 .选择器
正在查找元素
div
的属性a
,在具有属性id='cards'
的元素div
下...所以不是你想要的 .你可能想要:
哪个会在
div
下找到属性为id='cards'
的第一个a
元素 .嘿,如果一切都失败了,试试文档吧 . :)
http://docs.seleniumhq.org/docs/02_selenium_ide.jsp#locating-elements
http://docs.seleniumhq.org/docs/appendix_locating_techniques.jsp
http://www.zvon.org/xxl/XPathTutorial/General/examples.html