当另一个元素覆盖它时,元素不可点击

时间:2014-11-12 09:55:30

标签: selenium selenium-webdriver webdriver selenium-chromedriver

我正在编写一个测试,在某些时候导航到另一个页面。该页面的第一件事就是运行一个弹出带有消息的跨度的javascript。几秒钟后,那个跨度将消失。

我正在尝试点击一个低于跨度的链接,而chromedriver似乎不允许这样做。

  

System.InvalidOperationException:未知错误:元素不是   可点击(165,177)。其他元素将收到点击:   ...

这实际上是一种预期的行为,也有点令人印象深刻。

我可以点击链接而无需等待跨度消失吗?

2 个答案:

答案 0 :(得分:1)

我没有建议如何只要显示按摩就点击该元素,但您可以通过使用javascript和webDriver自行删除它来跳过等待它消失。executeScript

How to make a DIV visible and invisible with JavaScript

答案 1 :(得分:1)

我建议你使用" smart"等待,将验证窗口是否已消失。 它是使用WebDriverWaitExpectedConditions实现的。

Java中的示例:

WebDriverWait wait = new WebDriverWait(driver, 10); //timeout after 10 seconds 
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.ByCssSelector("CSS_POP_UP_SELECTOR"))); 

或者,您可以尝试使用以下脚本使元素可见:

  

JavascriptExecutor executor =(JavascriptExecutor)驱动程序;   executor.executeScript("的document.getElementById(' BUTTON_ELEMENT_ID'。)的style.display ='块&#39 ;;&#34);

或者,尝试隐藏消息:

  

JavascriptExecutor executor =(JavascriptExecutor)驱动程序;   executor.executeScript("的document.getElementById(' BUTTON_ELEMENT_ID'。)的style.display ='无&#39 ;;&#34);

如果您希望元素在不可见/可见时保持其大小,而不是显示'改变'可见性':

document.getElementById('BUTTON_ELEMENT_ID').style.visibility = 'hidden'; 
document.getElementById('BUTTON_ELEMENT_ID').style.visibility = 'visible';