
Witajcie ponownie !
W kolejnym wpisie dotyczącym pisania testów automatycznych w IntelliJ Idea pokaże wam jak stworzyć pierwszy projekt z naszym testem.
Zaczynamy odpalamy nasze IDE i tworzymy nowy projekt.



Wybieramy opcję Auto-Importu.



Jeśli na studiach mieliście np. jave wiecie, że tam łopatologicznie programy wywołują się z metody main.
Tutaj będziemy używać adnotacji, lecz tych zapożyczonych z testów jednostkowych czyli JUnit.
A więc JUnit służy do testów jednostkowych – testy te należą do developerów. Zaś ich zmodyfikowana wersja dla testerów to popularny TestNG.
Zatem przystępujemy do działania !
Musimy stworzyć w lokacji – > \src\test\resources\ plik testng.xml


Tworzymy plik ale przechodzimy do naszej klasy.

Po poprawnym imporcie mamy zielone znaczki pojedyńczy i taki podwójny.
Pojedyńczy oznacza, że ta metoda w klasie jest uruchamialna.


Po uruchomieniu pustej metody mamy wyniki 🙂
import org.testng.annotations.Test;
public class Test1 {
@Test
public void pierwszyTest()
{
}
}
Przechodzimy do pliku testng.xml

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="TestujemyAplikacjeWebowe">
<test name="Nauczyciel">
<classes>
<class name="Test1"/>
</classes>
</test>
</suite>
Prosto i przyjemnie po co nam ten plik konfiguracyjny ?


A no jest nam potrzebny po to by odwoływać się do pliku testng.xml a nie np. klasy czy innego tego typu bęc.
Jeśli mamy np. 3 klasy z testami każdy dotyczy czego innego.
Wystarczy że do pliku testng.xml dodamy kolejne klasy i mamy naszą konfiguracje.
Nie napisaliśmy jeszcze żadnych testów ale już wiemy że potrzebujemy do tego driverów przeglądarek chrome lub friefox.
Pomocny w tym okaże się nie kto inny jak maven 🙂
Pom.xml czyli dependency

W skrócie maven to narzędzie automatyzujące a raczej ułatwiające budowę aplikacji, zaś plik pom.xml to informacja dot. tego w jaki sposób projekt jest budowany oraz jakich dependency czyli zależności od bibliotek zew. używa.
Dobra do naszych testów potrzebne nam dependency z gałęzi Selenium oto one :
https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver/3.141.59
https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver/3.141.59
Oba dependency dotyczą przeglądarek i na końcu widzicie numerek 3.1441.59 oznacza to wersję obsługiwanego drivera przeglądarki.
Wtedy np. jesli istnieje wersja drivera 3.100.00 może okazać się, że z takim dependancy nie będzie działać albo wcale, albo będzie działać z błędami.
Potrzebujemy jeszcze selenium java i opcjalnie do późniejszych kursów wykorzystanie selenium grida i pochodnych.
https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/3.141.59
https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver/3.141.59
<?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>TestujemyAplikacjeWebowe</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.0.0</version>
<scope>test</scope>
</dependency>
<!-- tutaj sobie wstawiamy kolejne rzeczy.exe-->
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
</project>
Wracamy do naszej klasy z testem Test1.java
https://chromedriver.chromium.org/
Z tej strony pobieramy stabilny najnowszy driver chroma.

Zatem ścieżka w property wygląda tak jak screen poniżej.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; //poprawnie zaimprtowało nam to z mavena
import org.testng.annotations.Test;
public class Test1 {
@Test
public void pierwszyTest()
{
System.setProperty("webdriver.chrome.driver", "C:/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.pl");
driver.findElement(By.xpath("//*[@name='q']")).sendKeys("pogoda warszawa");
driver.findElement(By.xpath("//*[@name='btnK']")).click();
driver.close();
}
}

Oczywiście najpierw budujecie projekt, ta ikona zielonego młotka, a potem po pomyślnym wybudowaniu, uruchamiacie testu.
Dlatego tak fajne jest budowanie z konfiguracji testng.xml
W następnym wpisie pobawimy się trochę bardziej w tym samym projekcie 🙂
Z pozdrowieniami !