Selenium-Java-Autotesting
Selenium
— это бесплатная среда для автоматизированного тестирования (с открытым исходным кодом), которая используется при проверке веб-приложений в различных браузерах и на разных платформах. Для создания тестовых сценариевSelenium
мы можем использовать разные языки программирования, такие как Java, C#, Python, Ruby , PHP
и т.д.
Средства разработки Java
используют 3 основные технологии, которые позволяют пользователям писать, дорабатывать и запускать приложения:
JDK (Java Development Kit)
– для создания приложений;JVM (Java Virtual Machine)
– виртуальная машина для запуска приложений;JRE (Java Runtime Environment)
– платформа для исполнения приложений и JVM.Вам необходимо скачать JDK, если вы собираетесь работать в таких Java-средах как:
Sun Java Studio Creator
;
NetBeans IDE
;
IntelliJ IDEA
;
Borland JBuilder
;
JDeveloper
;
Eclipse
и других.
Прежде чем установить JDK
на Windows 11 или 10 проверьте её наличие через командную строку с помощью команды java – -version
. Если среда уже установлена, то можно начинать работу, если же нет, то скачиваете подходящую для вашей системы с официального сайта или другого источника. Затем запускаете установочный файл и ставите комплект как обычную программу.
Java Platform JDK 17
с официального сайта:https://www.oracle.com/java/technologies/downloads/
java
с настройками по умолчаниюWin+R
и наберите sysdm.cpl
перейдите во вкладку дополнительно/переменные среды.JAVA_HOME
.
<путь куда установлена java>
например (C:\Program Files\Java\jdk1.8.0_65)
.<путь куда установлена java>\bin
в переменную PATH
: Нажать Edit
и добавить: C:\Program Files\Java\jdk1.8.0_65\bin
java
в cmd
: java –version
. Если вы видите java-версию
в console
, значит, установка java
и обновление прошли успешно.IntelliJ IDEA
?IntelliJ IDEA
— это интегрированная среда разработки (IDE)
, то есть система программных средств для создания проектов на разных языках программирования.
ntelliJ IDEA
с официального сайта:* https://www.jetbrains.com/ru-ru/idea/
IntelliJ IDEA
с настройками по умолчаниюSelenium Java
?Selenium Java Client Driver
можно перейдя по ссылке:https://www.selenium.dev/downloads/.
На странице будет список клиентских драйверов для других языков, но мы выбираем только драйвер для Java
«selenium-3.14.0.zip»
. Для дальнейшей простоты использования распакуйте содержимое этого ZIP-файла на диске C, чтобы у вас был каталог «C:\selenium\»
.https://sites.google.com/a/chromium.org/chromedriver/ downloads
и скачайте ту версию ChromeDriver
, которая соответствует версии вашего браузера.
browser version
, откройте новое окно в Chrome, в строке поиска введите:chrome://version/
и нажмите Enter
. В верхней строке вы увидите информацию информацию о browser version
.
PATH
папку C:\webdrivers
.Selenium (Selenium Server Standalone)
Для запуска теста на удаленной машине нужно запустить на ней сервер, который будет принимать по сети команды, запускать браузер и выполнять их. Предполагается, что Java
на машине уже установлена. Запуск сервера выполняется следующей командой, набранной в командной строке:
cd ..
cd ..
Selenium Grid
— это инструмент, который запускает тесты на нескольких физических или виртуальных машинах, чтобы скрипты могли выполняться параллельно. По сути, Selenium Grid
— это кластер, состоящий из нескольких Selenium-серверов
. Он предназначен для организации распределённой сети, позволяющей параллельно запускать несколько браузеров на большом количестве машин.
Hub
— это сервер, который выступает в качестве центральной точки, где будут запускаться тесты. Selenium Grid
имеет только один концентратор и запускается на одной машине один раз.Node
— это Selenium-экземпляры
, которые прикреплены к концентратору, и которые выполняют тесты. В сетке может быть один или несколько узлов, которые могут быть любой ОС и могут содержать любой из поддерживаемых браузеров.Необходимо перейти по ссылке
https://www.selenium.dev/downloads/
Найдите Java
среди доступных языков и нажмите на Download
Распакуйте archive
. Содержимое будет примерно таким:
Откройте свой проект IntelliJ
и нажмите File → Project Structure
Выбрать Modules
, затем нажмите на плюс справа и выберите 1. JARs or directories…
Перейдите в папку, куда вы только что распаковали архив, и выберите все .jar
файлы из корня и из libs
подпапки.
Нажмите OK
Независимо от того, на каком языке программирования вы напишете код, операция подключения browser driver
будет примерно одинаковой.
Об этом можно прочитать в статье Connecting the browser driver in Selenium
Чтобы убедиться, что Selenium
успешно подключен, вставьте следующий код и скомпилируйте его.
package org.test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class WebDriverDemo1 {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver\\chromedriver.exe"); //setting the path for chrome driver
WebDriver driver = new ChromeDriver(); //creating object for chrome driver
driver.get("https://www.selenium.dev/selenium/web/web-form.html"); //opens the browser and navigates to the URL
}
}
Если вы не хотите или не можете редактировать PATH
переменную, попробуйте зарегистрировать путь к драйверу - вставьте перед строкой WebDriver driver = ...
driver.get("https://www.selenium.dev/selenium/web/web-form.html"); //opens the browser and navigates to the URL
Прежде всего, необходимо подключит By
в Java
, это делается следующим образом:
import org.openqa.selenium.By;
Часто бывает недостаточно просто найти элемент. Чтобы выполнить какие-то действия над найденным, подключите WebElement
import org.openqa.selenium.WebElement;
Давайте воспользуемся самым надежным методом - по id
. После изучения исходного кода страницы вы увидите следующий код
package com.example.selenium;
import java.net.MalformedURLException;
import java.net.URL;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class SeleniumApplicationTests {
WebDriver driver;
String baseUrl, nodeURL;
@Before
public void setUp() throws MalformedURLException {
baseUrl = "https://www.issn.org/ru/";
nodeURL = "http://192.168.138.4:4444/wd/hub";
DesiredCapabilities capability = new DesiredCapabilities();
capability.setBrowserName("chrome");
capability.setPlatform(Platform.WIN10);
driver = new RemoteWebDriver(new URL(nodeURL), capability);
}
@Test
public void simpleTest() {
driver.get(baseUrl);
Assert.assertEquals("SeleniumHQ Browser Automation", driver.getTitle());
}
@After
public void afterTest() {
driver.quit();
}
}
package com.example.demo2;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.MalformedURLException;
import java.net.URL;
public class Test1 {
public static void main(String[] args) throws MalformedURLException {
DesiredCapabilities capability = new DesiredCapabilities();
capability.setCapability(CapabilityType.BROWSER_NAME,"chrome");
WebDriver driver = new RemoteWebDriver(new URL("http://192.168.138.4:4444"), capability);
driver.get("https://www.issn.org/ru/");
System.out.println("Title of the page is " + driver.getTitle());
driver.close();
}
}
Используя linkText
, найдите все ссылки с текстом Renovation
, выберите первую из них и нажмите на нее
package com.example.demo3;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Main {
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("https://www.issn.org/ru/");
WebElement renovationLink = driver.findElements(By.linkText("План сайта")).get(0);
renovationLink.click();
}
}
tagName
Теперь давайте посмотрим на картинку. Давайте воспользуемся поиском по тегам
package com.example.demo3;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Main {
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
// 4. По tagName
driver.get("https://www.issn.org/ru/");
WebElement imageLink =
driver.findElements(By.tagName("img")).get(1);
imageLink.click();
}
}