首页 > 解决方案 > 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();

标签: javaseleniumselenium-webdriverxpathwebdriver

解决方案


您可以使用 action-item 类进行验证。

使用 x-path 来识别类名,然后做一个第 n 个孩子:

xpath("//[@id='name']//[@class='class']//[@class='action-item']:nth-child(2)"));

或者您也可以使用索引值,因为它们在同一个类中。不同的是,第二个项目的索引值将是 1。

或者,您也可以使用 cssContainText 来通过文本进行识别。


推荐阅读