Как щелкнуть заблокированный элемент в транспортире? - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь нажать кнопку, но иногда перед этой кнопкой появляется всплывающее окно, и мой скрипт автоматизации не сообщает мне, что элемент перехвачен и не доступен для щелчка, у меня есть функция для прокрутки вниз до элемента, но все же это другой элемент оказывается впереди, есть ли способ обойти этот блокирующий элемент?

Я могу попробовать действия, но это не будет работать в FireFox, так как в протакторе он не поддерживается, любые идеи, как создать функцию «Округлить» элемент, чтобы убедиться, что никакой другой элемент не блокирует его?

1 Ответ

0 голосов
/ 28 мая 2020

Прежде всего, прямой ответ на ваш вопрос. Используйте этот java скрипт click

/**
*  Clicks on passed element by injecting js click() in the context of window
*  @param    {ElementFinder}      $element       Locator of element
*  @return   {Promise}
*/
let jsClick = $element => 
        return browser.executeScript(
            'arguments[0].click();', $element.getWebElement()
        );

Что он делает - когда вы вызываете функцию и передаете элемент, он вводит код js в консоль браузера. этот код находит ваш элемент и выполняет щелчок. Важное различие в том, что он будет щелкать элемент независимо от макета или его видимости, поэтому не злоупотребляйте им в тестах, потому что на самом деле это не похоже на поведение пользователя.

Кроме того, какой элемент блокирует вашу кнопку? У меня было это много раз, когда сторонняя интеграция вызывала несколько случайных всплывающих окон, и вы не могли контролировать эти элементы. То, что я делал, и это всегда срабатывало, я удалял эту интеграцию также путем внедрения кода в браузер. Но код у всех разный, поэтому вам нужно изучить это. Пример здесь { ссылка }

...