Есть ли способ в Selenium WebDriver автоматически закрывать конкретный диалог HTML в любое время, когда он появляется на экране? - PullRequest
0 голосов
/ 27 мая 2020

Я автоматизирую веб-приложение с помощью Selenium Webdriver и Java. Есть конкретное диалоговое окно с ошибкой, которое имеет следующие качества:

  1. Оно может появляться в любое время в любом месте
  2. Это не предупреждение javascript, а скорее пользовательский элемент HTML.
  3. Иногда это может быть один диалог или серия из 8-10 диалогов один за другим.
  4. Каждый раз, когда он появляется, он также создает наложение, так что все автоматические щелчки не работают, пока мы не нажмем «ОК» ".

Я пытаюсь написать функцию 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 становится видимой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...