Java 使用xpath查找元素
今天我遇到了这个问题: 我有一些html代码:Java 使用xpath查找元素,java,html,selenium,xpath,Java,Html,Selenium,Xpath,今天我遇到了这个问题: 我有一些html代码: <div class="Main"> <div> <div class="display">First:</div> <div class="price">$0.01</div> </div> <div> <div class="display">Second:</
<div class="Main">
<div>
<div class="display">First:</div>
<div class="price">$0.01</div>
</div>
<div>
<div class="display">Second:</div>
<div class="price">$0.02</div>
</div>
<div>
<div class="display">Third:</div>
<div class="price">$0.03</div>
</div>
</div>
我知道findElements方法,但我想通过xpath来实现。查看您的xpath表达式,有几个问题:
- 您需要容纳包含
和
元素的容器 - 如果要根据元素的索引检索元素,则需要将选择器包装在
中()
- 您可以使用单个XPath表达式,而不是调用两次
findElement
- 查找
元素 - 容纳集装箱
- 使用XPath检索
text()
- 将选择器包装在
中,以便我们可以使用索引访问器()
(//*[@class='Main']/*/*[以(@class,'price')]开头])[2]/text()
在xpath中使用[1]或[2]不是一个好方法,因为当页面结构更改时,您的定位器将不会将其指向同一Web元素
更好的解决方法是在标签之间使用文本。
如果标记之间的文本是唯一的,那么您可以在xpath中直接使用它们的文本内容,并访问第二个元素
xpath=“//div[conatins(text(),'$0.02')]”
这将对您有所帮助。尝试使用以下xpath表达式
(//div/div[@class=“price”])[2]
哇,太快了!Thx,xpath exps中的括号是什么意思?正如@Ivan所说,括号用于使用索引访问器,然后使用[2]
选择第二个元素
chromeDriver.findElement(By.className("Main"))
.findElement(By.xpath(".//*[starts-with(@class, 'price')][2]")).getText()