java - XPath 的元素不可见错误
问题描述
我遇到了 XPath 的问题。
我可以使用这个 xpath://*[@id='name']//*[@class='class']//div[1]
-> 可以正常运行。
但我想使用 div[2] ex: //*[@id='name']//*[@class='class']//div[2]
,它给出了元素不可见的错误。
任何人都可以帮助我,我不知道为什么 div[1] 可以运行但 div[2] 不可见。
我的 HTML代码在这里:
<div class="class">
<div class="action-item" data-id="24" data-actioncode="STT">
<a href="#"><i class="fa fa-play"></i></a>
S T T
</div>
<div class="action-item" data-id="29" data-actioncode="FULL">
<a href="#"><i class="fa fa-play"></i></a>
FULL
</div>
<div class="action-item" data-id="30" data-actioncode="TEACHER">
<a href="#"><i class="fa fa-play"></i></a>
TEACHER
</div>
</div>
我试过的代码:
WebElement btnElement = driver.findElement(By.xpath("//[@id='name']//[@class='class']//div[2]"));
WebDriverWait wait= new WebDriverWait(driver,10 );
wait.until(ExpectedConditions.visibilityOf(btnElement));
btnElement.click();
解决方案
您可以使用 action-item 类进行验证。
使用 x-path 来识别类名,然后做一个第 n 个孩子:
xpath("//[@id='name']//[@class='class']//[@class='action-item']:nth-child(2)"));
或者您也可以使用索引值,因为它们在同一个类中。不同的是,第二个项目的索引值将是 1。
或者,您也可以使用 cssContainText 来通过文本进行识别。