JAVASCRIPTEXECUTOR В SELENIUM WEBDRIVER, МЕТОДЫ С ПРИМЕРАМИ

В этом учебном пособии по Selenium JavaScriptExecutor мы узнаем следующее

Содержание

Что такое JavaScript?

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

Что такое JavaScriptExecutor?

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

Он предоставляет два метода, такие как «executeScript» и «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(“Id Value”)).click();

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

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

Нам нужно импортировать следующий пакет в скрипт.

Пакет:

1

import org.openqa.selenium.JavascriptExecutor;

Синтаксис:

12

JavascriptExecutor js = (JavascriptExecutor) driver;js.executeScript(Script,Arguments);

Script — JavaScript для выполнения
Аргументы –
аргументы скрипта (необязательно). Может быть пустым.
Возвращает –
один из логических, длинных, списка, строковых, списка, логических, веб-элементов или 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(“document.getElementById('some id').value='someValue';”);js.executeScript( “document.getElementById('Email').value='SoftwareTestingMaterial.com';”);

Сценарий № 2: Нажатие кнопки

Нажатие кнопки в Selenium WebDriver с помощью JavaScript

123

js.executeScript(“document.getElementById('введите идентификатор вашего элемента').click();”);//orjs.executeScript(“arguments[0].click();”, loginButton);

Сценарий №3: To Handle Checkbox

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

< tr class=crayon-row>

1

js.executeScript(“document.getElementById('введите идентификатор элемента').checked=false;” );

Сценарий №4: Создать всплывающее окно оповещения в селен

1

js.executeScript(” alert('Добро пожаловать в SoftwareTestingMaterial');”);

Сценарий №5: < сильный>Чтобы обновить окно браузера с помощью Javascript

1

js.executeScript(“history.go(0)”);

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

12

String sText =  js.executeScript(“return document.documentElement.innerText;”).toString();System.out.println( sText);

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

12

String sText =  js.executeScript(“return document.title;”).toString();System.out.println(sText);

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

12

String sText =  js.executeScript(“return document.domain;”).toString();System.out.println(sText);

Сценарий №9. Получение URL-адреса веб-страницы< /h3>

12

String sText =  js.executeScript(“return document.URL;”).toString();System.out.println(sText) ;

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

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

1234

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

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

1

js.executeScript(“$('ul.menus.menu-secondary.sf-js-enabled.sub-menu li').hover()”);

Сценарий № 12. Чтобы перейти на другую страницу с помощью Javascript

1

js.executeScript(“window.location = 'https://www.softwaretestingmaterial.com”);

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

1

js.executeScript(“arguments&#91;0].click();”, element);

< h2 id=h-1-практический-пример-исполнения-скрипта-использования-селена-javascriptexecutor>#1. Практический пример executeScript с использованием Selenium JavaScriptExecutor

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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677

пакет программного обеспечения TestingMaterial; импортировать org.openqa.selenium.By;импортировать org.openqa.selenium.JavascriptExecutor;импортировать org.openqa.selenium.WebDriver;импортировать org.openqa.selenium.WebElement;импортировать org.openqa.selenium.firefox.FirefoxDriver;импортировать org. testng.annotations.Test; открытый класс JavaScriptExecutorClassDummy {статический драйвер WebDriver; @Testpublic static void javaScriptExeMethod() {System.setProperty (“webdriver.gecko.driver”, “D://Selenium Environment//Drivers//geckodriver.exe”); драйвер = новый FirefoxDriver ();driver.get(“https://www.gmail.com”);WebElement loginButton = driver.findElement(By.xpath(“//*&#91;@id='next']”)) ;/*Синтаксис:JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript(Script,Arguments);script — JavaScript для executeArguments — аргументы скрипта. (Необязательно)*/                         JavascriptExecutor js = (JavascriptExecutor)driver; //Раскомментируйте каждый сценарий с помощью Ctrl + Shift + (обратная косая черта) и найдите решение                 *//для ввода текста в Selenium WebDriver без использования метода sendKeys()                js.executeScript(“document.getElementById('some id').value ='какое-то значение';”); js.executeScript(“document.getElementById('Email').value='SoftwareTestingMaterial.com';”);*/                 /*//чтобы нажать кнопку в Selenium WebDriver с помощью JavaScript                //js.executeScript(“arguments&# 91;0].click();”, кнопка входа в систему); //или                js.executeScript(“document.getElementById('введите идентификатор элемента').click();”); js.executeScript(“document.getElementById('next').click();”);*/                /*//для обработки флажка                         js.executeScript(“document.getElementById('введите идентификатор элемента').checked=false; “);*//*//для создания окна оповещения в seleniumjs.executeScript(“alert('hello world');”);*//*//для обновления окна браузера с помощью Javascriptjs.executeScript(“history.go (0)”);*//*//чтобы получить внутренний текст всей веб-страницы в SeleniumString sText =  js.executeScript(“return document.documentElement.innerText;”).toString();System.out.println(sText) ;*/ /*//чтобы получить заголовок нашей веб-страницыString sText =  js.executeScript(“return document.title;”).toString();System.out.println(sText);*//*//чтобы получить the domainString sText =  js.executeScript(“return document.domain;”).toString();System.out.println(sText);*//*//чтобы получить URL-адрес нашей веб-страницыString sText =  js.executeScript(” return document.URL;”).toString();System.out.println(sText);*//*//для выполнения прокрутки в приложении с помощью  Selenium//Вертикальная прокрутка – вниз на 50  пикселей js.executeScript(“window.scrollBy(0,50)”);//для прокрутки до конца страницы мы можем использовать такой код, как //js.executeScript(“window.scrollBy(0,document.body .scrollHeight)”);*//* //чтобы щелкнуть подменю, которое видно только при наведении мыши на меню?//Наведите указатель мыши на меню автоматизации на панели меню        js.executeScript(“$('ul.menus.menu- second.sf-js-enabled.sub-menu li').hover()”);*//*//для перехода на другую страницу с помощью Javascript? //Переход на новую страницу        js.executeScript(“window.location = 'https://www.softwaretestingmaterial.com”);*/}}

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

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