Что такое JavaScriptExecutor в Selenium? - PullRequest
0 голосов
/ 07 октября 2018

Что такое JavaScript Executor в Selenium WebDriver?

Как его использовать и как мы можем использовать его в Selenium WebDriver?

Пример будет оценен

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

JavascriptExecutor

JavascriptExecutor - это интерфейс Selenium , который реализуется всеми следующими классами:

  • FirefoxDriver
  • ChromeDriver
  • InternetExplorerDriver
  • EdgeDriver
  • OperaDriver
  • SafariDriver
  • RemoteWebDriver
  • EventFiringWebDriver

При выполнении сценария Selenium время от времени из-за междоменных политик браузеры применяют ваш сценарийвыполнение может неожиданно завершиться неудачно и без соответствующей регистрации ошибок.Это особенно актуально при создании собственного XHR-запроса или при попытке получить доступ к другому фрейму.

Подробное обсуждение вы найдете в Uncaught DOMException: заблокирован фрейм с источником «http://localhost:8080” от доступа к кресту».-оригинальный фрейм при перечислении фреймов на странице

Интерфейс JavascriptExecutor предоставляет два метода следующим образом:

  • executeScript(): этот метод выполняет JavaScript в контексте текущего выбранного фрейма или окна.Предоставленный фрагмент скрипта будет выполнен как тело анонимной функции.В скрипте необходимо использовать document для ссылки на текущий документ.Обратите внимание, что локальные переменные не будут доступны после завершения скрипта, хотя глобальные переменные будут сохраняться.

  • executeAsyncScript(): ЭтоМетод выполняет асинхронный фрагмент JavaScript в контексте текущего выбранного фрейма или окна.В отличие от выполнения синхронного JavaScript, сценарии, выполняемые с помощью этого метода, должны явно сигнализировать о завершении, вызывая предоставленный обратный вызов.Этот обратный вызов всегда вводится в выполняемую функцию как последний аргумент.


Пример

Несколько примеров:

Подробное обсуждение аргументов также можно найти в Что означают аргументы [0] и аргументы [1] при использовании метода executeScript из интерфейса JavascriptExecutor через Selenium WebDriver?


tl; dr

Спецификация файла междоменной политики

0 голосов
/ 08 октября 2018

Длинный и короткий ответ:

Это интерфейс Selenium, который напрямую позволяет вам взаимодействовать с HTML DOM веб-страницы, он делает это путем выполнения выражений JavaScript с использованием следующего синтаксиса:

(JavascriptExecutor) driver.executeScript("JavaScript_EXPRESSION_HERE", ADDITIONAL_ARGUMENTS);

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

Это, однако, также является недостаткомКроме того, если вы хотите автоматизировать веб-страницу, как будто реальный пользовательский опыт.Тем не менее, хотя это действительно мощный вариант, но мы должны стараться не использовать JavaScript Executor, если не существует стандартного способа сделать это через Selenium.

0 голосов
/ 07 октября 2018

Вы можете просмотреть следующую ссылку для получения дополнительной информации: https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html

Указывает, что драйвер может выполнять JavaScript, предоставляя доступ к механизму для этого.Из-за междоменных политик браузеры могут принудительно завершить выполнение сценария и без адекватного обмена сообщениями об ошибках.Это особенно актуально при создании собственного XHR-запроса или при попытке доступа к другому фрейму.В большинстве случаев при устранении неполадок лучше всего просматривать консоль браузера после выполнения запроса WebDriver.

В основном js executor позволяет выполнять код js из драйвера селена.

Пример: прокрутка доэлемент с JS.

element = driver.findElement(By.id("test"));   
(JavascriptExecutor) driver.executeScript("arguments[0].scrollIntoView(true);", element);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...