我编写了自动化脚本来测试在ajax上非常繁琐的Web应用程序。例如,Saving...在保存设置时,将显示一个模式对话框,其中包含文本“ ”,而灯箱将使页面的其余部分变灰。
Saving...
我的测试脚本试图在消息消失之前单击测试中的下一个链接。在驱动Firefox时,它几乎总是可以工作,但是在驱动Chrome时,会显示以下错误:
Exception in thread "main" org.openqa.selenium.WebDriverException: Element is not clickable at point (99.5, 118.5). Other element would receive the click: <div class="dijitDialogUnderlay _underlay" dojoattachpoint="node" id="lfn10Dijit_freedom_widget_common_environment_Dialog_8_underlay" style="width: 1034px; height: 1025px; "></div> (WARNING: The server did not provide any stacktrace information)
发生这种情况是因为灯箱遮挡了我要单击的元素。我想等待灯箱消失,然后再尝试点击链接。
检查灯箱不再存在不是有效的解决方法,因为有时会出现多个级别的模态对话框和灯箱,并且没有容易区分它们的方法。
Selenium中是否有一种方法可以检测元素是否可单击(没有其他元素使它模糊)?尝试/捕获将是一种解决方法,但我更愿意进行适当的检查(如果可能)。
使用WebDriverWait条件。
WebDriverWait wait = new WebDriverWait(yourWebDriver, 5); wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//xpath_to_element")));
Webdriver将等待5秒钟,以便您可以单击您的元素。