无法点击()"在Selenium测试中的元素

时间:2015-03-18 14:25:46

标签: java selenium xpath click webdriver

我已经使用Selenium录制了一个自动测试,将其导出为JAVA代码,现在我正在努力完成它。问题是我无法完成click();

这是我的代码,是其中的一部分:

try {
  assertTrue(driver.findElement(By.xpath("//*[text()='Nowa oferta dokument']"))
          .getText().matches("^Nowa oferta dokument$"));
} catch (Error e) {
  verificationErrors.append(e.toString());
}
driver.findElement(By.xpath("//*[text()='Nowa oferta dokument']")).click();

首先我使用xpath找到元素,然后使用xpath我想点击它以便打开它的设置。

我已经尝试了很多方法来解决它,但仍然无法弄明白。你看到这个解决方案吗?

HTML:



<a href="offer_view.html?id=1007" class="linkOffer firepath-matching-node"></a>
<p class="photo"><img src="img/document.png"></p>
                
<p class="name">Nowa oferta dokument</p>
                
<p class="price">123 zł</p>
                
<div class="rate ctrlViewRateOffer" data-value="0.0000">
                  
<span class="stars"></span>
                  
<span class="stars"></span>
                  
<span class="stars"></span>
                  
<span class="stars"></span>
                  
<span class="stars"></span>
                
</div>
                
<p class="date"></p>
                
<div class="hide info">
                                      
<p><a href="#" class="ctrlClickSubmit edit" title="Edytuj" data-value="u_document_1007" data-form="formAddOffer"></a></p>
                    
<p><a class="ctrlClickSubmit delete" title="Usuń" data-value="delete_1007" data-form="formManageOffer" href="#"></a></p>
                    
<p><a href="offer_manage.html?id=1007" class="buttons optionsEventsBtn nohover" title="Zarządzaj ofertą"></a></p>
                                    
<p class="type">e-book</p>
                  
<p>To jest opis nowo tworzonej oferty - dokumentu, który wystawię na sprzedaż, a następnie u...</p>
                
</div>
                
<div class="bgInfo"></div>
              
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

最可能的原因是

By.xpath(“// * [text()='Nowa oferta dokument']”)

匹配多个元素...... 另外,检查返回的元素是否可点击

答案 1 :(得分:0)

嗯,你的选择器错了:

driver.findElement(By.xpath("//*[@class='name'][text()='Nowa oferta dokument']")).click();

应该有希望工作。如果没有,由于前面的其他元素,您的元素可能无法点击。

在这种情况下,您可以使用javascript:

模拟点击
driver.executeScript("arguments[0].click()", driver.findElement(By.xpath("//*[@class='name'][text()='Nowa oferta dokument']")));

您的CURRENT选择器与多个元素匹配。由于您尝试选择的元素至少包含两个元素,因此它匹配您实际需要的元素上方树中的每个父对象,因为它们包含它作为text()。