我正在编写一个测试,在某些时候导航到另一个页面。该页面的第一件事就是运行一个弹出带有消息的跨度的javascript。几秒钟后,那个跨度将消失。
我正在尝试点击一个低于跨度的链接,而chromedriver似乎不允许这样做。
System.InvalidOperationException:未知错误:元素不是 可点击(165,177)。其他元素将收到点击: ...
这实际上是一种预期的行为,也有点令人印象深刻。
我可以点击链接而无需等待跨度消失吗?
答案 0 :(得分:1)
我没有建议如何只要显示按摩就点击该元素,但您可以通过使用javascript和webDriver自行删除它来跳过等待它消失。executeScript:
答案 1 :(得分:1)
我建议你使用" smart"等待,将验证窗口是否已消失。 它是使用WebDriverWait和ExpectedConditions实现的。
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';