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