Я автоматизирую веб-приложение с помощью Selenium Webdriver и Java. Есть конкретное диалоговое окно с ошибкой, которое имеет следующие качества:
- Оно может появляться в любое время в любом месте
- Это не предупреждение javascript, а скорее пользовательский элемент HTML.
- Иногда это может быть один диалог или серия из 8-10 диалогов один за другим.
- Каждый раз, когда он появляется, он также создает наложение, так что все автоматические щелчки не работают, пока мы не нажмем «ОК» ".
Я пытаюсь написать функцию Javascript, которая будет автоматически нажимать кнопку« ОК »всякий раз, когда она становится видимой.
Я обнаружил xpath этого кнопку «ОК», и я выполняю следующий код JS, как только страница открывается:
function getElementByXpath(path) {return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;}
function isVisible(){document.getElementByXpath("//button[contains(@customAttribute, 'OK')]").click();}
$x("//button[contains(@customAttribute, 'OK')]")[0].bind('isVisible', isVisible);
$x("//button[contains(@customAttribute, 'OK')]")[0].show('slow', function(){$(this).trigger('isVisible');});
Однако кнопка «ОК» не нажимается таким образом. [0] - правильный индекс массива, потому что этот xpath возвращает только 1 элемент.
Проблема в том, что функция привязки не существует, когда мы используем $ x (xpath), но она существует, когда мы используем $ (css_locator ).
Как сделать так, чтобы функция isVisible запускалась всякий раз, когда кнопка ok становится видимой?