Selenium WebDriver — определяет, является ли элемент кликабельным (т. е. не закрыт ли он модальным лайтбоксом додзё)

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

17
задан Ripon Al Wasim 17 February 2017 в 12:28
поделиться