我遇到了XPath的问题。
我可以使用此xpath://*[@id='name']//*[@class='class']//div[1]
- >可以运行。
但是我想使用div [2] ex://*[@id='name']//*[@class='class']//div[2]
,它会给出元素不可见的错误。
任何人帮助我PLZ,我不知道为什么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();
答案 0 :(得分:0)
您可以使用CSS选择器路径,就像div 2一样:
div.action-item:nth-child(2)
感谢。
答案 1 :(得分:0)
您可以试用代码:
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@data-actioncode='FULL']")));
driver.findElement(By.xpath("//div[@data-actioncode='FULL']")).click();
答案 2 :(得分:0)
您可以使用action-item类进行验证。
使用x-path识别类名,然后执行第n个孩子:
xpath("//[@id='name']//[@class='class']//[@class='action-item']:nth-child(2)"));
或者您也可以使用索引值,因为它们位于同一个类中。 区别在于,第二项的索引值为1。
或者,您也可以使用cssContainText来识别文本。