Difference between revisions of "Selenium 3 architektúra"

From berki WIKI
Jump to: navigation, search
(Selinium IDE tesztek)
(Selinium IDE tesztek)
Line 7: Line 7:
  
  
=Selinium IDE tesztek=
+
=Selinium IDE 3 tesztek=
  
 
A Selinium IDE egy Firefox böngésző plug-in, aminek a segítségéve felvehetjük a user aktivitást egy úgynevezett Selenese script formájában, amit vissza is játszhatunk a Selinium IDE-ben.  
 
A Selinium IDE egy Firefox böngésző plug-in, aminek a segítségéve felvehetjük a user aktivitást egy úgynevezett Selenese script formájában, amit vissza is játszhatunk a Selinium IDE-ben.  
  
{{warning|A '''Selinium IDE 3'''-asnak semmi köze már a régi '''Selinium IDE 2'''-eshez és a korábbi verziókhoz. A Firefox 56-tól kezdve, a Firefox áttért a '''WebExtensions''' plugin API-ra, és megszüntette a legacy firefox plugin támogatást, amire a Selinium IDE 2 is épített. Így nulláról újraírták a Selinium IDE-t '''WebExtensions''' API támogatással. A WebExtensions API egy szabványosított plugin API, így a Selinium IDE 3 elvileg Chrome-ban is működik }}
+
{{warning|A '''Selinium IDE 3'''-asnak semmi köze már a régi '''Selinium IDE 2'''-eshez és a korábbi verziókhoz. A Firefox 56-tól kezdve, a Firefox áttért a '''WebExtensions''' plugin API-ra, és megszüntette a legacy firefox plugin támogatást, amire a Selinium IDE 2 is épített. Így nulláról újraírták a Selinium IDE-t '''WebExtensions''' API támogatással. A WebExtensions API egy szabványosított plugin API, így a Selinium IDE 3 elvileg Chrome-ban is működik<br>
 +
A Selinium IDE 3-nak ez a weboldala: https://github.com/SeleniumHQ/selenium-ide }}
  
 
=Lokális WebDriver tesztek=
 
=Lokális WebDriver tesztek=

Revision as of 13:01, 19 July 2018



Mi az a Selinium

Selinium IDE 3 tesztek

A Selinium IDE egy Firefox böngésző plug-in, aminek a segítségéve felvehetjük a user aktivitást egy úgynevezett Selenese script formájában, amit vissza is játszhatunk a Selinium IDE-ben.

WarningIcon.png

Warning
A Selinium IDE 3-asnak semmi köze már a régi Selinium IDE 2-eshez és a korábbi verziókhoz. A Firefox 56-tól kezdve, a Firefox áttért a WebExtensions plugin API-ra, és megszüntette a legacy firefox plugin támogatást, amire a Selinium IDE 2 is épített. Így nulláról újraírták a Selinium IDE-t WebExtensions API támogatással. A WebExtensions API egy szabványosított plugin API, így a Selinium IDE 3 elvileg Chrome-ban is működik
A Selinium IDE 3-nak ez a weboldala: https://github.com/SeleniumHQ/selenium-ide


Lokális WebDriver tesztek

GRID 2.0

https://examples.javacodegeeks.com/enterprise-java/selenium/selenium-standalone-server-example/
https://www.guru99.com/introduction-to-selenium-grid.html

Bevezető

A Selinium WebDriver alakalkalmazást futtathatjuk cluster-es környezetben is. Lesz egy manager példányunk, ezt hívják hub-nak, és lesznek worker példányok, akik a tesztet futtatják, ezt hívják node-nak. Mind a hub, mind a node-ok futtatására ugyan arra a Selinium jar-ra van szükség, csak más paraméterezéssel kell őket elindítani: selenium-server-standalone
A Selinium server-t vagy más néven GRID-et innen tölthetjük le: http://selenium-release.storage.googleapis.com/index.html?path=3.9/

ClipCapIt-180718-165453.PNG


A Selinium GRID 2.0-re ne telepítjük implicit a futtatni kívánt teszt-et. Ugyan úgy, ahogy a GRID nélküli futtatásnál csináltuk, el kell indítani a Standalone JAVA alkalmazást, ami a Selinium tesztet tartalmazza, azonban a WebDrvier példányosításakor nem lokális böngésző driver helyett a RemoteDriver-t kell példányosítani, ahol meg kell adni a GRID hub URL-jét. Mikor futtatjuk a Standalone JAVA alkalmazásunkat, a tesztet el fogja küldeni a távoli GRID hub-nak, és a hub szét fogja küldeni a tesztet a node-konak.

WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
ClipCapIt-180717-182805.PNG

A node-ok a beállításuktól függően vagy a HtmlUnitDriver driver-el emulálják a böngésző futását (ekkor nem szükséges grafikus környezet) vagy tényleg elindítanak egy böngésző példányt és a driver segítségével csatlakoznak a böngésző remote/test API-jára, és a szemünk előtt zongorázzák le a tesztet.


A Selinium server-nek a help-jét a -h kapcsolóval lehet előhívni:

$ java -jar selenium-server-standalone-3.9.1.jar -h
Usage: <main class> [options]
  Options:
    --version, -version
      Displays the version and exits.
      Default: false
    -browserTimeout
      <Integer> in seconds : number of seconds a browser session is allowed to 
      hang while a WebDriver command is running (example: driver.get(url)). If 
      the timeout is reached while a WebDriver command is still processing, 
      the session will quit. Minimum value is 60. An unspecified, zero, or 
      negative value means wait indefinitely.
      Default: 0
    -debug
      <Boolean> : enables LogLevel.FINE.
      Default: false
    -jettyThreads, -jettyMaxThreads
      <Integer> : max number of threads for Jetty. An unspecified, zero, or 
      negative value means the Jetty default value (200) will be used.
    -log
      <String> filename : the filename to use for logging. If omitted, will 
      log to STDOUT
    -port
      <Integer> : the port number the server will use.
      Default: 4444
    -role
      <String> options are [hub], [node], or [standalone].
      Default: standalone
    -timeout, -sessionTimeout
      <Integer> in seconds : Specifies the timeout before the server 
      automatically kills a session that hasn't had any activity in the last X 
      seconds. The test slot will then be released for another test to use. 
      This is typically used to take care of client crashes. For grid hub/node 
      roles, cleanUpCycle must also be set.
      Default: 1800

Láthatjuk, hogy a hub vagy node szerepkört a -role kapcsolóval lehet megadni. Ha nem adjunk meg semmit, akkor standalone üzemmódban fog elindulni a selinium grid 1 példányban.

ImportantIcon.png

Note
Természetesen a valóságban a node-okat érdemes külön fizikai gépre tenni, hogy megosszuk a terhelést, azonban itt a példában az összes node egy környezetben lesz


WarningIcon.png

Warning
A Grid 1.0-nak semmi köze nincs a GRID 2.0-hoz, nincs köztük átjárás, az 1.0 Selinium RC-n alapul, míg a 2.0 a WebDriver-en. A GRID 1.0 és a Selinium RC használata már nem javallot


Cluster létrehozása

HUB

Elsőként hozzuk létre a hub-ot:

$ java -jar selenium-server-standalone-3.9.1.jar -role hub
...
16:31:29.770 INFO - Launching Selenium Grid hub on port 4444
...
16:31:30.431 INFO - Selenium Grid hub is up and running
16:31:30.431 INFO - Nodes should register to http://192.168.124.1:4444/grid/register/
16:31:30.432 INFO - Clients should connect to http://192.168.124.1:4444/wd/hub
  • Láthatjuk, hogy a végén kiírta a hub azt az URL-t, ahol a node-oknak regisztrálniuk kell magukat. Ezt meg kell adni a node példányok indításakor
  • Az utolsó sorban azt is kiírta a hub, hogy a Standalone JAVA alkalmazásként futó Selinium teszt milyen URL-en tudja beküldeni a teszt-t a server-nek.


A hub-nak van egy web-es konzolja, ahol láthatjuk majd a node-ok listáját, típusát, valamint a hub és a node-ok konfigurációját: http://localhost:4444/grid/console

ClipCapIt-180718-170118.PNG

Node1

Hozzuk létre a node-okat. A hub elérhetőségét a -hub kapcsolóval kell megadni:

$ java -jar selenium-server-standalone-3.9.1.jar -role node  -hub http://192.168.124.1:4444/grid/register/
..
16:36:17.659 INFO - Launching a Selenium Grid node on port 5555
..
16:36:18.029 INFO - Registering the node to the hub: http://192.168.124.1:4444/grid/register


Ennek hatására a hub-on is megjelent a log-ban, hogy egy node regisztrálta magát:

16:36:18.169 INFO - Registered a node http://192.168.124.1:5555

Node2 létrehozása külső konfigurációval

A hub aszerint fogja kiosztani a teszteket a node-konak ...



Teszt futtatása

https://james-willett.com/2015/06/using-assertions-in-your-selenium-tests/

  • A Selinium teszt egy java standalone alkalmazás, ami elküldi a Selinium hub-nak a tesztet, aki ezt végrehajtja a megfelelő node-okon. A teszt környezetet és a teszt futtatását is maven-el fogjuk végezni.
  • A tesztet egy standard java osztályban kell definiálni. Elsőként példányosítani kell a org.openqa.selenium.WebDriver interfész egy megfelelő implementációját, majd ezen WebDriver példány metódusaival lehet definiálni a teszt minden lépését.
  • Ha a teszt-t nem a GRID-en akarjuk futtatni, akkor a drivernek egy böngésző függő (standalone) implementációját kell használni (pl. HtmlUnitDriver). De mivel mi a hub-ra elküldeni a tesztet, nekünk a RemoteWebDriver-t kell használni.


Hozzunk létre egy maven projektet az alábbi pom-al:

<?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>test1</groupId>
        <artifactId>test1</artifactId>
        <version>1.0</version>
        <dependencies>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-server</artifactId>
                <version>3.13.0</version>
            </dependency>
        </dependencies>
</project>


Hozzunk létre egy új JAVA osztályt, src/main/java/ mappában (GridTest1.java):

<?xml version="1.0" encoding="UTF-8"?>


Szofisztikált node konfiguráció

Lehetőség van rá


https://github.com/mozilla/geckodriver/releases --> geckodriver-v0.21.0-linux64.tar.gz

ImportantIcon.png

Note
Fontos hogy a 65 bites verziót töltsük le ha 64 bites az oprendszer



ClipCapIt-180719-124810.PNG

(Firefox browser remote üzemmódban)