使用XPath时元素不可见错误

时间:2018-05-13 05:20:00

标签: java selenium selenium-webdriver xpath webdriver

我遇到了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();

3 个答案:

答案 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来识别文本。