Я пишу автоматизированные скрипты для тестирования веб-приложений, которые очень тяжело работают на ajax. Например, при сохранении настроек отображается модальное диалоговое окно с текстом «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 определить, является ли элемент кликабельным (другие элементы не скрывают его)? Попробовать / поймать - это обходной путь, но я бы предпочел сделать правильную проверку, если это возможно.