Создание программного обеспечения с превосходным пользовательским интерфейсом является одним из ключевых аспектов разработки, но бывают случаи, когда необходимо протестировать самые сложные функциональные возможности. Такие тесты включают изменение размера окна, минимизацию или максимизацию, все они требуют взаимодействия с окном браузера, и если количество тестов велико, это становится обременительным. Минимизация окон браузера в Selenium с помощью JUnit может быть использована для автоматизации взаимодействия с окнами браузера. Существуют сценарии, в которых минимизация окон браузера является обязательной операцией для продолжения работы над другими сценариями в соответствующем тестовом наборе.
Другой случай использования свернутого браузера для запуска тестов — это когда мы запускаем тесты на локальной машине и хотим, чтобы экран был свободен для того, чтобы мы могли заняться чем-то еще, пока тесты продолжают выполняться. Какой бы ни была причина, сворачивание окна браузера с помощью Selenium WebDriver — очень полезная функция, которая может облегчить нам жизнь во многих ситуациях.
Давайте подробнее рассмотрим, как можно работать с минимизированными и максимизированными окнами браузера с помощью Selenium WebDriver.
В предыдущих блогах этой серии уроков по Selenium JUnit мы узнали, как запускать параметризованные тесты в JUnit, использовать аннотации в JUnit и многое другое. В этом уроке по Selenium JUnit мы научимся сворачивать браузеры в Selenium WebDriver с помощью JUnit.
Начинаете свой путь с Selenium WebDriver? Ознакомьтесь с этим пошаговым руководством по автоматизации тестирования с помощью Selenium WebDriver.
Давайте начнем!
Как свернуть браузеры в Selenium WebDriver с помощью JUnit?
До Selenium 3 у нас были некоторые ограничения при работе с браузерами; т.е. мы могли только максимизировать окно и не могли свернуть его напрямую. Хотя это позволяло использовать setPosition() для сворачивания окна браузера, это было бесполезно, так как вы не могли свернуть окно, когда захотите.
Однако в Selenium4 появился новый метод minimize(), который сворачивает окно браузера до значка на панели задач, как это обычно делает пользователь. Как и метод «SwitchTo().window(id)», минимизация окна также доступна с помощью метода window.minimize() в Selenium WebDriver 4.
Selenium 4 раскрывает огромный потенциал, предлагаемый фреймворком Selenium. Selenium 4 создан для лучшей работы с технологическими стеками, присущими браузеру, включая современные JavaScript-фреймворки. Если вы хотите узнать больше о Selenium 4, вы можете углубиться в наш блог о том, что нового в Selenium 4.
Кроме того, вы можете следить за YouTube-каналом LambdaTest и быть в курсе последних уроков по Selenium-тестированию, Cypress-тестированию, CI/CD и многим другим.
Для того чтобы свернуть окно браузера в нашем сценарии автоматизации Selenium, мы можем использовать приведенную ниже команду.
driver.manage().window().minimize();
Для использования функции минимизации нам просто необходим соответствующий пакет Selenium WebDriver. В нашем случае это RemoteWebDriver, так как мы запускаем кейсы на онлайн Selenium Grid.
Теперь, когда мы рассмотрели синтаксис для сворачивания браузера, давайте углубимся в то, как мы можем использовать то же самое в нашей системе автоматизации Selenium. Мы сделаем это, продемонстрировав на примере минимизации окна браузера.
Мы будем использовать облачную Selenium Grid от LambdaTest для автоматизации наших тестовых случаев.
LambdaTest — это облачный инструмент кроссбраузерного тестирования, который обеспечивает решение всех проблем, возникающих при выполнении автоматизированного тестирования на локальной машине. Такие инструменты тестирования Selenium, как LambdaTest, предлагают Selenium Grid, состоящую из 2000+ онлайн браузеров, чтобы вы могли без труда выполнять автоматизированное тестирование Selenium.
В следующем разделе этого руководства по Selenium JUnit о том, как свернуть окно браузера в Selenium WebDriver, мы покажем, как вы можете легко выполнять автоматизированное тестирование, используя облачную Selenium Grid.
Как свернуть окно браузера в Selenium WebDriver
Войдите в Selenium Playground, предлагаемый LambdaTest, запустите браузер, затем сверните его и получите заголовок страницы.
Мы рассмотрим нижеупомянутые шаги в нашем тестовом примере:
-
Запустите веб-браузер.
-
Откройте https://www.lambdatest.com/selenium-playground/.
-
Сверните браузер.
-
Получить заголовок веб-страницы и распечатать его.
Ниже приведен файл тестового класса и pom.xml, который понадобится для установки всех необходимых зависимостей.
package LambdaTest;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.MalformedURLException;
import java.net.URL;
class MinimizeBrowserWindow {
public String username = "YOUR USERNAME";
public String accesskey = "YOUR ACCESSKEY";
public static RemoteWebDriver driver = null;
public String gridURL = "@hub.lambdatest.com/wd/hub";
@BeforeClass
public void setUp() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "chrome");
capabilities.setCapability("version", "95.0");
capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get the any available one
capabilities.setCapability("build", "MinimizeBrowserWindow");
capabilities.setCapability("name", "MinimizeBrowserWindowUsingSelenium");
try {
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
} catch (MalformedURLException e) {
System.out.println("Invalid grid URL");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
@Test
public void minimizeBrowserWindow() {
try {
System.out.println("Logging into Selenium Playground");
driver.get("http://labs.lambdatest.com/selenium-playground/");
driver.manage().window().minimize();
System.out.println("Minimized the browser window");
String title=driver.getTitle();
System.out.println("The title of web page is:"+title);
} catch (Exception e) {
}
}
@AfterClass
public void closeBrowser() {
driver.close();
System.out.println("Closing the browser");
}
}
Ниже приведен pom.xml, который понадобится для установки всех необходимых зависимостей.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>LambdaTest</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>4.0.0-alpha-7</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>4.0.0-alpha-7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
Примечание: Unescape JSON — это утилита JavaScript, которая восстанавливает экранированную строку JSON или файл в исходное состояние без экранирования.
Подробное описание кода
В этом разделе данного руководства Selenium JUnit о том, как сворачивать браузеры в Selenium WebDriverПопробуем разобраться в тестовом примере с помощью журнала TestNG Reporter Log, который мы автоматизировали.
1. Импорт зависимостей: Здесь мы импортировали все необходимые классы JUnit, Desired Capabilities и RemoteWebDriver для установки соответствующих возможностей браузера и запуска тестовых примеров на сетке.
2. Глобальные переменные: Поскольку для выполнения тестов мы использовали Selenium Grid Cloud типа LamdaTest, мы используем нижеприведенные переменные.
Здесь вы можете заполнить значения для вашего соответствующего имени пользователя и ключа доступа, которые можно получить, войдя в раздел профиля LamdaTest. Вы можете скопировать имя пользователя и ключ доступа для использования в коде. Однако URL сетки останется прежним, как показано ниже.
3. @BeforeClass(Метод установки): Здесь мы использовали генератор желаемых возможностей LambdaTest и установили необходимые возможности, такие как название браузера, версия, платформа и т.д., для нашего Selenium Remote WebDriver. Если вы новичок в аннотациях JUnit, ознакомьтесь с блогом Annotations in JUnit, в котором подробно рассматриваются важные аннотации в JUnit.
4. @ Test(minimizeBrowserWindow): Здесь мы просто входим в Selenium Playground, а затем сворачиваем браузер с помощью команды driver.manage.window.minimize().
После сворачивания окна браузера мы получаем заголовок веб-страницы и выводим его на печать.
Консольный вывод
После запуска тестового примера вывод консоли будет выглядеть следующим образом.
Как видите, тестовый пример работает без проблем, даже когда вы сворачиваете окно браузера. Разве это не здорово?
Начните бесплатное тестирование в удаленном браузере уже сегодня.
Эта сертификация JUnit устанавливает стандарты тестирования для тех, кто хочет продвинуться по карьерной лестнице в области автоматизированного тестирования Selenium с JUnit.
Вот краткий обзор сертификации JUnit от LambdaTest:
Как свернуть браузеры в Selenium WebDriver с помощью JUnit, задав его положение?
В приведенном выше примере этого учебника по Selenium JUnit мы рассмотрели, как свернуть браузеры в Selenium WebDriver с помощью функции minimize(), которая является одним из наиболее широко используемых методов. Однако не будет ли интересно изучить еще несколько альтернативных способов сделать это? Давайте проверим их.
Для того чтобы свернуть окно браузера, мы также можем использовать следующую команду.
driver.manage().window().setPosition(new Point(int x,int y));
Здесь x и y означают соответствующие координаты x и y положения окна. Поскольку положение и размеры окна отличаются на разных машинах, мы будем использовать общий метод поиска соответствующих координат x & y, относящихся к окну браузера. В конечном итоге мы будем использовать их для установки свернутой позиции.
Приведенный ниже тестовый пример демонстрирует тот же случай использования, который был показан ранее. Единственным изменением является использование метода setPosition для сворачивания соответствующего окна браузера.
package LambdaTest;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.net.MalformedURLException;
import java.net.URL;
class MinimizeBrowserWindowUsingPosition {
public String username = "YOUR USERNAME";
public String accesskey = "YOUR ACCESSKEY";
public static RemoteWebDriver driver = null;
public String gridURL = "@hub.lambdatest.com/wd/hub";
@BeforeClass
public void setUp() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "chrome");
capabilities.setCapability("version", "95.0");
capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get the any available one
capabilities.setCapability("build", "MinimizeBrowserWindowBySettingPosition");
capabilities.setCapability("name", "MinimizeBrowserWindowBySettingPositionUsingSelenium");
try {
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
} catch (MalformedURLException e) {
System.out.println("Invalid grid URL");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
@Test
public void minimizeBrowserWindowBySettingPosition() {
try {
System.out.println("Logging into Selenium Playground");
driver.get("http://labs.lambdatest.com/selenium-playground/");
Point p = driver.manage().window().getPosition();
System.out.println("The Position of the window is:"+p);
Dimension d = driver.manage().window().getSize();
System.out.println("The Size of the window is:"+d);
driver.manage().window().setPosition(new Point((d.getHeight()-p.getX()), (d.getWidth()-p.getY())));
System.out.println("The New X Coordinate After Minimizing Is:"+(d.getHeight()-p.getX()));
System.out.println("The New Y Coordinate After Minimizing Is:"+(d.getWidth()-p.getY()));
System.out.println("Minimized the browser window by setting its position");
String title=driver.getTitle();
System.out.println("The title of web page is:"+title);
} catch (Exception e) {
}
}
@AfterClass
public void closeBrowser() {
driver.close();
System.out.println("Closing the browser");
}
}
Краткое описание кода
Положение окна означает расстояние окна от левой стороны (координаты X) экрана и верхней стороны (координаты Y) экрана.
Сначала мы определяем положение окна, затем его размер. Затем, используя метод setPosition, мы устанавливаем соответствующие координаты x и y окна, как показано ниже, что позволит свернуть окно.
driver.manage().window().setPosition(new Point((d.getHeight()-p.getX()), (d.getWidth()-p.getY())));
Для использования методов Dimension и Point необходимо импортировать выделенные ниже пакеты.
Вывод консоли
Когда вы запустите тестовый пример, вывод консоли будет выглядеть следующим образом.
Как свернуть браузеры в Selenium WebDriver с помощью сочетаний клавиш?
В двух предыдущих разделах этого руководства по Selenium JUnit мы рассмотрели, как сворачивать браузеры в Selenium WebDriver с помощью команд driver.manage.window().
Однако, когда дело доходит до сворачивания окон вручную, мы всегда прибегаем к сочетаниям клавиш. Самым распространенным сочетанием клавиш для этого является Windows + D.
Давайте посмотрим, как мы можем воспроизвести комбинации клавиш с помощью нашего сценария автоматизации Selenium. В этом примере воспроизведения сочетаний клавиш мы будем использовать класс Robot. Класс Robot в Selenium генерирует собственные системные события ввода для автоматизации тестирования и других приложений, где требуется контроль над мышью и клавиатурой. Основное преимущество класса Robot заключается в том, что он помогает обрабатывать действия с клавиатурой в Selenium WebDriver.
Однако важно отметить, что приведенный ниже пример сворачивания браузера с помощью сочетаний клавиш применим только для машины Windows.
Приведенный ниже тестовый пример демонстрирует тот же случай, как свернуть браузер в Selenium WebDriver и получить заголовок веб-страницы со свернутым окном браузера с помощью сочетания клавиш.
package LambdaTest;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.net.MalformedURLException;
import java.net.URL;
class MinimizeBrowserWindowUsingRobotClass {
public String username = "YOUR USERNAME";
public String accesskey = "YOUR ACCESSKEY";
public static RemoteWebDriver driver = null;
public String gridURL = "@hub.lambdatest.com/wd/hub";
@BeforeClass
public void setUp() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "chrome");
capabilities.setCapability("version", "95.0");
capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get the any available one
capabilities.setCapability("build", "MinimizeBrowserWindow");
capabilities.setCapability("name", "MinimizeBrowserWindowUsingRobotClass");
try {
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
} catch (MalformedURLException e) {
System.out.println("Invalid grid URL");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
@Test
public void minimizeBrowserWindowUsingRobotClass() {
try {
System.out.println("Logging into Selenium Playground");
driver.get("http://labs.lambdatest.com/selenium-playground/");
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_WINDOWS);
robot.keyPress(KeyEvent.VK_D);
System.out.println("Minimizing the window");
robot.keyRelease(KeyEvent.VK_WINDOWS);
robot.keyRelease(KeyEvent.VK_D);
System.out.println("Minimized the browser window");
String title=driver.getTitle();
System.out.println("The title of web page is:"+title);
} catch (Exception e) {
}
}
@AfterClass
public void closeBrowser() {
driver.close();
System.out.println("Closing the browser");
}
}
Краткое описание кода
Для эмуляции комбинации клавиш (Windows + D) мы использовали класс Robot. Здесь мы использовали функции keyPress и keyRelease класса Robot.
keyPress(int keycode): Этот метод используется для нажатия заданной клавиши. Параметр keycode — это целочисленное значение для нажатой клавиши. Например, чтобы нажать клавишу для алфавита A, нужно передать значение KeyEvent.VK_A, т.е. keyPress(KeyEvent.VK_A).
keyRelease(int keycode): Этот метод освобождает заданную клавишу. Параметр keycode — это целочисленное значение для нажатой клавиши. Например, чтобы освободить уже нажатую клавишу для алфавита A, нужно передать значение KeyEvent.VK_A, т.е. keyPress(KeyEvent.VK_A).
Здесь KeyEvent является низкоуровневым событием. В Java AWT низкоуровневые события — это события, которые указывают на прямую связь с пользователем, например, нажатие клавиши, отпускание клавиши и т.д.
Для того чтобы использовать указанные выше методы, вам понадобятся перечисленные ниже импорты пакетов.
В результате, используя класс Robot и его методы KeyPress и KeyRelease, мы сможем легко эмулировать действия клавиатуры: нажать вместе кнопки Windows+D и отпустить их, когда окно браузера свернется.
Примечание: SVG favicons имеет оценку совместимости с браузерами 40. Это общий балл из 100, отражающий поддержку браузерами веб-технологии. Чем выше этот показатель, тем выше совместимость с браузером. Оценка совместимости с браузером не является 100% отражением каждого браузера и поддержки веб-технологии. Однако он дает вам представление о том, насколько вы должны полагаться на конкретную веб-технологию с точки зрения совместимости с браузером.
Как свернуть несколько окон браузера в Selenium WebDriver с помощью JUnit?
В предыдущих разделах этого руководства по Selenium JUnit мы рассмотрели, как сворачивать браузеры в Selenium WebDriver с помощью различных способов, таких как метод minimize, метод setPosition и действия с клавиатурой в Selenium WebDriver.
В этом разделе мы также продемонстрируем тот же пример. Однако в этом примере мы рассмотрим его с помощью трех различных методов тестирования и выполним его в трех различных браузерах.
package LambdaTest;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.net.MalformedURLException;
import java.net.URL;
class MinimizeMultipleBrowserWindow {
public String username = "YOUR USERNAME";
public String accesskey = "YOUR ACCESSKEY";
public String gridURL = "@hub.lambdatest.com/wd/hub";
@Test
public void minimizeWindowInChromeBrowser() {
try {
RemoteWebDriver driver = null;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("version", "latest");
capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get the any available one
capabilities.setCapability("build", "MinimizeChromeBrowserWindow");
capabilities.setCapability("name", "MinimizeChromeBrowserWindowUsingChromeBrowser");
try {
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
} catch (MalformedURLException e) {
System.out.println("Invalid grid URL");
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("Logging into Selenium Playground");
driver.get("http://labs.lambdatest.com/selenium-playground/");
driver.manage().window().minimize();
System.out.println("Minimized the browser window");
String title=driver.getTitle();
System.out.println("The title of web page is:"+title);
driver.close();
System.out.println("Closing the browser");
} catch (Exception e) {
}
}
@Test
public void minimizeWindowInFirefoxBrowser() {
try {
RemoteWebDriver driver = null;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "Firefox");
capabilities.setCapability("version", "94.0");
capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get the any available one
capabilities.setCapability("build", "MinimizeFirefoxBrowserWindow");
capabilities.setCapability("name", "MinimizeFirefoxBrowserWindowUsingFireFoxBrowser");
try {
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
} catch (MalformedURLException e) {
System.out.println("Invalid grid URL");
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("Logging into Selenium Playground");
driver.get("http://labs.lambdatest.com/selenium-playground/");
driver.manage().window().minimize();
System.out.println("Minimized the browser window");
String title=driver.getTitle();
System.out.println("The title of web page is:"+title);
driver.close();
System.out.println("Closing the browser");
} catch (Exception e) {
}
}
@Test
public void minimizeWindowInMicrosoftEdgeBrowser() {
try {
RemoteWebDriver driver = null;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "MicrosoftEdge");
capabilities.setCapability("version", "95.0");
capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get the any available one
capabilities.setCapability("build", "MinimizeEdgeBrowserWindow");
capabilities.setCapability("name", "MinimizeEdgeBrowserWindowUsingEdgeBrowser");
try {
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
} catch (MalformedURLException e) {
System.out.println("Invalid grid URL");
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("Logging into Selenium Playground");
driver.get("http://labs.lambdatest.com/selenium-playground/");
driver.manage().window().minimize();
System.out.println("Minimized the browser window");
String title=driver.getTitle();
System.out.println("The title of web page is:"+title);
driver.close();
System.out.println("Closing the browser");
} catch (Exception e) {
}
}
}
Подробное описание кода
В этом тестовом примере мы рассматриваем функциональность свернутого окна в трех различных браузерах, т.е. Chrome, Firefox и Microsoft Edge. Здесь мы используем сетку LambdaTest для установки имени и версии соответствующего браузера.
После запуска соответствующих браузеров мы входим в Selenium Playground, сворачиваем соответствующие окна и получаем заголовок веб-страницы.
В результате, используя сетку LambdaTest, мы рассмотрели один и тот же тестовый пример в трех разных браузерах. Затем мы запустили три разных тестовых случая одновременно, используя параллельное тестирование с помощью JUnit 5 и Selenium.
Жизнь стала проще, не так ли?
Это руководство по тестированию Selenium JUnit для новичков и профессионалов поможет вам выполнить параллельное тестирование с помощью JUnit и Selenium на облачной Selenium Grid на базе LambdaTest.
После завершения тестов вы сможете просмотреть результаты тестирования, журналы и запись тестов в LambdaTest Automation Dashboard.
Примечание: API интернационализации показывает оценку совместимости с браузерами 90. Это общий балл из 100, отражающий поддержку браузерами веб-технологии. Чем выше этот показатель, тем выше совместимость с браузерами. Оценка совместимости с браузером не является 100%-ным отражением каждого браузера и поддержки веб-технологии. Однако он дает вам представление о том, насколько вам следует полагаться на конкретную веб-технологию с точки зрения совместимости с браузером.
Заключение
В этом руководстве по Selenium JUnit мы узнали, как свернуть браузеры в Selenium WebDriver при выполнении автоматизированного тестирования Selenium с помощью driver.manage.window.minimize(). Мы также узнали об альтернативных вариантах установки положения окна или нажатия клавиш клавиатуры с помощью класса Robot в Selenium. В конце мы также реализовали один и тот же сценарий на нескольких окнах браузеров разных версий и запустили их параллельно.
Надеюсь, вам понравилось читать эту статью и вы узнали о различных способах сворачивания окна браузера.
Счастливого тестирования!!!