首页 文章

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

提问于
浏览
0

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

我试图点击一个低于 Span 的链接,而chromedriver似乎不允许这样做 .

System.InvalidOperationException:未知错误:元素在点(165,177)处不可点击 . 其他元素会收到点击:...

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

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

2 回答

  • 1

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

    How to make a DIV visible and invisible with JavaScript

  • 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 = '块';”);

    或者,尝试隐藏消息:

    JavascriptExecutor executor =(JavascriptExecutor)驱动程序; executor.executeScript( “的document.getElementById( 'BUTTON_ELEMENT_ID')的style.display = '无';”);

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

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

相关问题