atesting.ru Блог JavaScriptExecutor в Selenium WebDriver, методы с примерами

JavaScriptExecutor в Selenium WebDriver, методы с примерами

В этом руководстве по Selenium JavaScriptExecutor мы узнаем следующее

Что такое JavaScript?

JavaScript — это язык программирования для взаимодействия с HTML DOM в браузере.

Что такое JavaScriptExecutor?

Исполнитель JavaScript — это интерфейс, предоставляемый Selenium, который предоставляет механизм для выполнения JavaScript через Selenium WebDriver.

Он предоставляет два метода, такие как «executeScript» & amp; «ExecuteAsyncScript» для запуска JavaScript в текущем выбранном фрейме, окне или странице.

Почему мы используем JavaScriptExecutor?

В Selenium WebDriver есть локаторы, такие как ID, Class, XPath и т. д., для работы с элементами на веб-странице.

Иногда эти локаторы Selenium по умолчанию могут не работать. А вот и JavaScriptExecutor на картинке.

JavaScriptExecutor используется для выполнения операций на веб-странице.

Для использования JavaScriptExecutor в сценариях Selenium нет необходимости устанавливать надстройку или плагин.

Единственный шаг, который нам нужно сделать, — это импортировать org.openqa.selenium.JavascriptExecutor в сценарий Selenium.

JavascriptExecutor в Selenium позволяет WebDriver взаимодействовать с HTML DOM в браузере.

Иногда Selenium дает неверные результаты из-за неожиданных действий, которые происходят во время выполнения скрипта. Скажем, при открытии веб-сайта появляется всплывающее окно. Из-за этого Selenium не может найти конкретный элемент, который мы записали в скрипте, и выдает ошибку или неверный результат.

Например:

В целом , мы нажимаем на элемент с помощью метода click () в Selenium.

1 driver.findElement (By.id (& # 34; Id Value & # 34;)). Click ();

Иногда веб-элементы управления плохо реагируют на команды Selenium, и мы можем столкнуться с проблемами, связанными с приведенным выше заявлением « click () «. Как было сказано ранее, для преодоления такой ситуации мы используем интерфейс JavaScriptExecutor .

Нет необходимости писать отдельный скрипт для выполнения JavaScript. в браузере с помощью скрипта Selenium WebDriver. Просто используйте предопределенный интерфейс с именем « Java Script Executor ».

Нам нужно импортировать в скрипт указанный ниже пакет.

Пакет:

1 import org.openqa.selenium.JavascriptExecutor;

Синтаксис:

12 Драйвер JavascriptExecutor js = (JavascriptExecutor); js.executeScript (сценарий, аргументы);

Скрипт — JavaScript для выполнения
Аргументы —
Аргументы для сценарий (необязательно). Может быть пустым.
Возвращает —
Одно из Boolean, Long, List, String, List, Boolean, WebElement или null.

Методы в JavaScriptExecutor

следующие методы JavaScriptExecutor

  1. executeAsyncScript
  2. executeScript

№1. executeAsyncScript

Этот метод выполняет асинхронный фрагмент JavaScript в контексте текущего выбранного окна или фрейма в Selenium. Асинхронный скрипт быстро отображает вашу веб-страницу.

# 2. executeScript

Этот метод выполняет JavaScript в контексте текущего выбранного окна или фрейма в Selenium.

Скрипт, который мы использовали в этом методе, выполняется в теле анонимной функции. Мы можем передавать ему сложные аргументы.

  • Long
  • List
  • String
  • Boolean
  • WebElement

Как мы используем JavaScriptExecutor в Selenium

Давайте ознакомьтесь с некоторыми сценариями, которые мы могли бы обработать с помощью интерфейса JavaScriptExecutor:

Сценарий № 1: ввод текста в текстовом поле

Чтобы ввести текст в Selenium WebDriver без использования метода sendKeys ()

<тело>

12 js.executeScript (& # 34; document.getElementById (& # 39; some id & # 39;). value = & # 39; someValue & # 39 ;; & # 34;); js.executeScript (& # 34; document.getElementById (& # 39; Электронная почта & # 39;). Value = & # 39; SoftwareTestingMaterial.com & # 39 ;; & # 34;);

Сценарий № 2: Чтобы нажать на кнопку

Чтобы нажать кнопку в Selenium WebDriver с помощью JavaScript

123 js.executeScript (& # 34; document.getElementById (& # 39; введите свой идентификатор элемента & # 39;). click (); & # 34;); //orjs.executeScript (& # 34; arguments & amp; # 91; 0] .click (); & # 34 ;, loginButton);

Сценарий № 3: для обработки флажка

Мы передаем true или false для обработки флажка

1 js.executeScript (& # 34; document.getElementById (& # 39; enter element id & # 39;). проверено = false; & # 34;);

Сценарий № 4: Чтобы сгенерировать всплывающее окно с предупреждением в селен

1 js.executeScript (& # 34; alert (& # 39; Добро пожаловать в SoftwareTestingMaterial & # 39;); & # 34;);

< h3 id = "h-scene-5-to-refresh-browser-window-using-javascript"> Сценарий № 5: Чтобы обновить окно браузера с помощью Javascript

1 js.executeScript (& # 34; history.go (0) & # 34;);

Сценарий № 6: Чтобы получить внутренний текст всей веб-страницы в Selenium

12 String sText = js.executeScript (& # 34; return document.documentElement.innerText; & # 34;). ToString (); System.out.println (sText );

Сценарий № 7 : Чтобы получить заголовок нашей веб-страницы

12 String sText = js.executeScript (& # 34; return document.title; & # 34;). toString (); System.out.println ( sText);

Сценарий № 8: Чтобы получить домен

12 String sText = js.executeScript (& # 34; return document.domain; & # 34;). toString (); System.out.println (sText);

Сценарий № 9: Чтобы получить URL-адрес веб-страницы

12 String sText = js.executeScript (& # 34; return document.URL; & # 34;). toString (); System.out.println ( sText);

Сценарий № 10: Выполнение прокрутки в приложении с помощью Selenium

См. Также: Как прокручивать веб-страницу вниз или вверх с помощью Selenium WebDriver

1234 //Вертикальная прокрутка — вниз на 500 пикселей js.executeScript (& # 34; window.scrollBy (0,500) & # 34;); //для прокрутки до конца страницы мы можем использовать код вроде //js .executeScript (& # 34; window.scrollBy (0, document.body.scrollHeight) & # 34;);

Сценарий № 11 : Чтобы щелкнуть Подменю, которое отображается только при наведении курсора мыши на Меню

1 js.executeScript (& # 34; $ (& # 39; ul.menus.menu-secondary.sf-js-enabled.sub-menu li & # 39;). hover () & # 34;) ;

Сценарий № 12. Для перехода на другую страницу с помощью Javascript

1 js.executeScript (& # 34; window.location = & # 39; https: //www.softwaretestingmaterial.com");

Сценарий № 13: Чтобы найти скрытый элемент в селене с помощью JavaScriptExecutor

1 js.executeScript (& # 34; arguments & amp; # 91; 0] .click (); & # 34 ;, element);

# 1. Практический пример выполнения сценария с использованием Selenium JavaScriptExecutor

Приведенная ниже программа поможет вам справиться с некоторыми сценариями, которые мы используем при написании сценариев.

123456789101112131415161718192021222324252627282930313233343536373839404142434455675765735765765765765765765765765765414243441676576576576541424344675675647657657657655 crayon-code «>программный пакетTestingMaterial; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox. import org.openqa.selenium.firefox.Firefox testng.annotations.Test; открытый класс JavaScriptExecutorClassDummy {статический драйвер WebDriver; @Test public static void javaScriptExeMethod () {System.setProperty (& # 34; webdriver.gecko.driver & # 34;, & # 34; D: //Selenium Environment //Драйверы //geckodriver.exe & # 34;); драйвер = новый FirefoxDriver (); driver.get (& # 34; https: //www.gmail.com"); WebElement loginButton = driver.findElement (By.xpath (& # 34; //* & amp; # 91; @id = & # 39; next & # 39;] & # 34;));/* Синтаксис: JavascriptExecutor js = (JavascriptExecutor) драйвер; js.executeScript (сценарий, аргументы); скрипт — JavaScript для выполнения. Аргументы — Аргументы скрипта. (Необязательно) */JavascriptExecutor js = (JavascriptExecutor) драйвер; //Раскомментируйте каждый сценарий с помощью Ctrl + Shift + (обратная косая черта) и найдите решение * //для ввода текста в Selenium WebDriver без использования метода sendKeys () js.executeScript (& # 34; document.getElementById (& # 39; некоторый идентификатор & # 39;). value = & # 39; someValue & # 39 ;; & # 34;); js.executeScript (& # 34; document.getElementById (& # 39; Email & # 39;). value = & # 39; SoftwareTestingMaterial.com & # 39 ;; & # 34;); *//* //чтобы щелкнуть кнопка в Selenium WebDriver с использованием JavaScript //js.executeScript("arguments&#91;0pting.click();&#34 ;, loginButton); //или js.executeScript (& # 34; document.getElementById (& # 39; введите свой идентификатор элемента & # 39;). click (); & # 34;); js.executeScript (& # 34; document.getElementById (& # 39; next & # 39;). click (); & # 34;); *//* //для обработки флажка js.executeScript (& # 34; document .getElementById (& # 39; введите идентификатор элемента & # 39;). checked = false; & # 34;); *//* //для создания окна всплывающего оповещения в selenium js.executeScript (& # 34; alert (& # 39; hello world & # 39;); & # 34;); *//* //для обновления окна браузера с помощью Javascript js.executeScript (& # 34; history.go (0) & # 34;); *//* //для получения внутреннего текста всей веб-страницы в Selenium String sText = js.executeScript (& # 34; return document.documentElement.innerText; & # 34;). toString (); System.out.println (sText); *//* //чтобы получить заголовок нашей веб-страницы String sText = js.executeScript (& # 34; return document.title; & # 34;). ToString (); System.out.println (sText); *//* //чтобы получить домен String sText = js.executeScript (& # 34; return document.domain; & # 34;). ToString (); System.out.println (sText); *//* //чтобы получить URL-адрес нашей веб-страницы String sText = js.executeScript (& # 34; return document.URL; & # 34;). ToString (); System.out.println (sText); *//* //для выполнения прокрутки в приложении с использованием Selenium //Вертикальная прокрутка вниз на 50 пикселей js.executeScript (& # 34; window.scrollBy (0,50) & # 34 ;); //для прокрутки до конца страницы мы можем использовать код вроде //js.executeScript("window.scrollBy(0,document.body.scrollHeight)");*//* //щелкнуть Подменю, которое отображается только при наведении курсора мыши на Меню? //Наведите указатель мыши на меню автоматизации на панели меню js.executeScript (& # 34; $ (& # 39; ul.menus.menu-secondary.sf-js-enabled.sub-menu li & # 39;). Hover () & # 34;); *//* //для перехода на другую страницу с помощью Javascript? //Переход к новой странице js.executeScript (& # 34; window.location = & # 39; https: //www.softwaretestingmaterial.com"); * /}}

# 2. Практический пример использования executeAsyncScript

executeAsyncScript визуализирует вашу веб-страницу быстрее. Используя executeAsyncScript, наш сценарий запускается на стороне браузера, а не на стороне сервера, потому что он отправляет обратный вызов в набор тестирования на стороне сервера, как только сценарий будет готов.

1234567891011121314151617181920212223 программный пакетTestingMaterial; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; открытый класс JavaScriptExecutorClassDummy {@Test public void Login () {WebDriver driver = new FirefoxDriver (); JavascriptExecutor js = (JavascriptExecutor) драйвер; //Для запуска сайта driver.get (& # 34; https: //www.softwaretestingmaterial.com"); //Чтобы развернуть окно, driver.manage (). Window (). Maximize (); //Чтобы установить таймаут скрипта равным 10 секундам, driver.manage (). Timeouts (). SetScriptTimeout (10, TimeUnit.SECONDS); //Чтобы объявить и установить время начала long startTime = System.currentTimeMillis (); //Вызов метода executeAsyncScript () для ожидания 10 секунд js.executeAsyncScript (& # 34; window.setTimeout (arguments & amp; # 91; arguments.length — 1], 10000); & # 34;); //Чтобы получить разницу текущего времени и времени начала System.out.println (& # 34; Время ожидания: & # 34; + (System.currentTimeMillis () — startTime)); }}

Не пропустите: Что нового в Selenium 4

Заключение:

Изучение того, как работать с JavaScriptExecutor в Selenium, является обязательным для решения проблем, с которыми иногда сталкивается Selenium WebDriver при взаимодействии с веб-элементами.

TAG: qa