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