Changes

Jump to: navigation, search

Selenium 3 architektúra

19,143 bytes added, 16:42, 20 July 2018
Szofisztikált node konfiguráció (képességek)
=Mi az a Selenium3=
A Selenium 3 egy Web felület tesztelő eszköz. Minden Selelnium Teszt test lépésekből áll. Miden lépésében:
* Meg tudunk nyitni egy URL-t
* A megnyitott weblap tetszőleges pontjára rákereshetünk
A Selenium (3) nagyon nagy változáson ment keresztül az évek során. Jelenleg 3 fő komponensből áll.   * '''WebDriver''': Ez nem egy applikáció mint a Selenium IDE, hanem egy interfész, ami több programozási nyelven elérhető, mint pl Java, C#, Python. A segítségével az általunk ismert programozási nyelven írhatjuk meg a tesztünket, hozhatunk létre a '''Selenese''' script-el ekvivalens lépéseket. A WebDriver API-nak több implementációja is létezik. ** Böngésző függő implementációk: A Firefox WebDriver implementáció csatlakozik a Firefox szabványos remoteing interfészére, és távirányítja a teszt futtatása közben a böngészőt. ** Natív, böngésző független implementáció: Egy egy böngésző emulátor lib, ami úgy csinál a WEB szerver felé, mint ha egy böngésző lenne, javascript motor is van benne.  Tehát a mi esetünkben készítenünk kell egy JAVA osztályt, ami példányosítja a WebDriver interfészt, majd az interfészen, szabványos metódus hívásokkal teszt lépéseket és ellenőrzéseket kell definiálni.
* '''WebDriver''': Ez nem egy applikáció mint a Selenium IDE, hanem egy interfész, ami több programozási nyelven elérhető, mint pl Java, C#, Python. A segítségével az általunk ismert programozási nyelven írhatjuk meg a tesztünket, hozhatunk létre a '''Selenese''' script-el ekvivalens lépéseket<br>
A WebDriver API-nak több implementációja is létezik.
** Böngésző függő implementációk: A Firefox WebDriver implementáció csatlakozik a Firefox szabványos remoteing interfészére, és távirányítja a teszt futtatása közben a böngészőt.
** Natív, böngésző független implementáció: Egy egy böngésző emulátor lib, ami úgy csinál a WEB szerver felé, mint ha egy böngésző lenne, javascript motor is van benne.
Tehát * '''GRID''': Ez egy klászeres környezet a WebDriver interfésszel készült tesztek futtatására, ami egy manager-ből (HUB) és több tesztelést végző node-ból áll. Mikor futtatjuk a WebDirver interfészt használó JAVA programunkat, akkor ahelyett hogy továbbítaná a kéréseket a böngészőnek, elküldi a HUB-nak, aki a beállításoknak megfelelően el fogja küldeni a node-okra a teszt lépéseket. A node-okon vagy egy böngészőben futtatják a tesztet, vagy a natív driver-el emulálják a böngészőt ha nincs X az adott gépen. Ennek több előnye is van: egyrészt nagyban skálázható, párhuzamosítani tudjuk a nagy teszteket, másrészt használhatunk specializált node-okat, pl Windows + IE, Windoes + Chrome, Linux + Firefox, Android + Chrome ... <br><br> =WebDriver=Ahogy azt már láthattuk, a WebDriver egy interfész, ami több programozási nyelven elérhető, mint pl Java, C#, Python. A segítségével az általunk ismert programozási nyelven írhatjuk meg a tesztünket, hozhatunk létre a Selenese script-el ekvivalens lépéseket (oldal megnyitása, elem megkeresése, elem ellenőrzése, customer interakció kezelése).  :[[File:ClipCapIt-180719-182156.PNG]]   A WebDriver API-nak több implementációja is létezik.  * '''Böngésző függő implementációk''': A Firefox WebDriver implementáció csatlakozik a Firefox szabványos remoteing interfészére, és távirányítja a teszt futtatása közben a böngészőt. Nagy előnye, hogy valódi böngészőben, a valódi futtatással megegyező módon fut a teszt, a javascript tényleg a böngésző javascript motorján fut. Hátránya, hogy csak olyan környezetben futtatható, ahol fel van telepítve az adott böngésző, és persze fut X.   * '''HtmlUnitDriver''', böngésző független implementáció: Egy egy böngésző emulátor lib, ami úgy csinál a mi esetünkben készítenünk WEB szerver felé, mint ha egy böngésző lenne, javascript motor is van benne. Előnye, hogy nem kell hozzá X, borzasztó gyors, tehát a háttérben is futtatható aktív grafikus felület nélkül (ez majd a GRID-es futtatásnál lesz előny, lásd lentebb) hátránya viszont, hogy nem valódi böngészőben fut az alkalmazás, tehát ha valami itt lefut, vagy pont hogy nem fut le, nem jelenti azt, hogy egy valódi böngészőben is jó lett volna, vagy hogy megakadt volna.  {{note|A Firefox böngészőhöz a '''GeckoDriver'''-t kell letölteni. Ezt írják róla:<br><br>'''GeckoDriver''' is the link between your tests in Selenium and the Firefox browser. GeckoDriver is a proxy for using W3C WebDriver-compatible clients to interact with Gecko-based browsers i.e. Mozilla Firefox in this case. As Selenium 3 will not have any native implementation of FF, we have to direct all the driver commands through Gecko Driver. Gecko Driver is an executable file that you need to have in one of the system path before starting your tests. Firefox browser implements the WebDriver protocol using an executable called GeckoDriver.exe. This executable starts a server on your system. All your tests communicate to this server to run your tests. It translates calls into the Marionette automation protocol by acting as a proxy between the local and remote ends. It is something similar to what we discussed in the chapter on Internet explorer & Chrome. }}    A doksiban feltételezzük hogy JAVA a futtató környezet, ezt külön nem fogom írni.   Egy WebDriver-el írt Seleium teszt úgy néz ki, hogy egy java osztálytírunk, amiben példányosítjuk a WebDriver-t, majd a WebDriver példány metódusait hívogatva definiáljuk a tesztünk teszt lépéseit. * Megnyithatunk egy weboldalt. * Kereshetünk elemeket a weboldalon* A megtalált elemek tartalmát ellenőrizhetjük, vagy azokon user akciókat hajthatunk végre (kattintások, szöveg bevitel ..:) A teszt futtatását valamelyik JAVA unit tesztelő eszközzel szokásos végrehajtani: * JUnit* NJunit* TestNG  Pl ha JNuni-ot használunk, akkor létre kell hozni metódusokat, amiket a '''@Test''' annotációval dekorálunk, és JUnit tesztként kell futtatni a teszt osztályunkat. Ezen metódusokban kell futtatni a teszt lépéseket. Mi is JUnit-ot fogunk használni.  {{warning|A '''WebDriver''' a Selenium 2.0-ban lett bemutatva, mint a '''Selenium RC''' komponens utódja. Ugyan az RC-t a Selenium 3-as még mindig támogatja, de mára már elavultnak számít, használata nem javallott. }} <br>==Driver letöltése==Ahogy azt már mondtuk, szükségünk van egy WebDriver implementáció, ami példányosítja már böngésző függő. Külön driver van Firefox-hoz és külön Chorme-hoz. Ezeket le kell tölteni, és a megfelelő java system paraméterekkel meg kell adni az elérési helyüket a WebDriver interfésztalkalmazásnak. Fontos, hogy ezek szabványos WebDriver-ek, ezeknek nincs implicit köze a Selenium-hoz.   '''Firefox:''' <br>https://github.com/mozilla/geckodriver/releases<br>Ezt kell letölteni: '''geckodriver-v0.21.0-linux64.tar.gz'''  '''Chrome:''' <br>Chrome-hoz is elérhető a WebDriver, innen tölthető le: <br>https://sites.google.com/a/chromium.org/chromedriver/downloads <br>https://chromedriver.storage.googleapis.com/index.html?path=2.40/<br>Ezt kell letölteni: '''chromedriver_linux64.zip''' '''IE:''' <br>....   {{note|Fontos hogy mindig az operációs rendszernek megfelelő driver-t töltsük le (32 ill 64 bites) különben furcsa hibákat fogunk kapni futtatás közben}}  Java system paraméterrel meg kell adni a driver helyét. A paraméter neve driver-enként különbözik. * '''Firefox''': -Dwebdriver.gecko.driver="..path../geckodriver"* '''Chrome''': -Dwebdriver.chrome.driver="..path../chromedriver"* '''IE:''' -Dwebdriver.ie.driver="..." Ebből is következik, hogy egy teszt csak egy böngészőre futtatható egy időben, azon a böngészőn fog futni, majd aminek a driver-ét megadtuk. A teszt futtatásakor a driver az alapértelmezett helyen fogja keresni a böngésző futtatható állományát. Meg fogja nyitni a böngészőt és a szabványos remoting interfészencsatlakozni fog hozzá. <br> ==WebDriver teszt írása==A java WebDriver-hez van szerencsére '''Maven''' dependencia, szabványos metódus hívásokkal ami a futtatáshoz szükséges összes jar-t letölti. Hozzuk létre a pom.xml-t az alábbi tartalommal: <source lang="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>AleCashSelPilot</groupId> <artifactId>AleCashSelPilot</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-all</artifactId> <version>1.3</version> </dependency>  <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server</artifactId> <version>3.13.0</version> </dependency> </dependencies></project></source>  Majd futtassuk le: <pre>$ mvn clean install</pre>  Majd hozzuk létre a projekt struktúránkat (vagy használjunk Maven archetype-ot)<pre>- lib/- src/main/java/ | - resources</pre>Másoljuk a geckodriver-t a lib mappába   Java system paraméterrel meg kell adni a driver helyét. A paraméter neve driver-enként különbözik.  * '''Firefox''': -Dwebdriver.gecko.driver="..path../geckodriver"* '''Chrome''': -Dwebdriver.chrome.driver="..path../chromedriver" És hozzunk létre az első Teszt osztályunkat: Teszt1.java. A teszt lépéseket meg fogja nyitni a google.com-ot és ellenőrzéseket ott rá fog keresni a "how to use Selenium" -ra. <source lang="java">import static org.junit.Assert.fail;import java.util.concurrent.TimeUnit; import org.junit.After;import org.junit.Before;import org.junit.Test;import org.openqa.selenium.By;import org.openqa.selenium.Keys;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver; public class FirstTestCase { private WebDriver driver;  private StringBuffer verificationErrors = new StringBuffer();  @Before public void setUp() throws Exception { System.setProperty("webdriver.gecko.driver", ".../lib/geckodriver"); driver = new FirefoxDriver();  }  @Test public void testFirstTestCase() throws Exception { driver.get("https://www.google.com/"); driver.findElement(By.id("lst-ib")).click(); driver.findElement(By.id("lst-ib")).clear(); driver.findElement(By.id("lst-ib")).sendKeys("how to use sele"); driver.findElement(By.id("lst-ib")).sendKeys(Keys.DOWN); driver.findElement(By.id("lst-ib")).sendKeys(Keys.ENTER); }  @After public void tearDown() throws Exception {// driver.quit();// String verificationErrorString = verificationErrors.toString();// if (!"".equals(verificationErrorString)) {// fail(verificationErrorString);// } }}</source>{{note|A driver elérési útját azért az osztályon belül adtuk itt meg, mert a WebDriver lokálisan fut, nem a Seleinum GRID-en, így a driver-re itt 'helyben' van szükség. Majd látni fogjuk, hogy a [[Selenium_3_architektúra#GRID_2.0|Grid 2.0]] fejezetben, hogy grid-es futtatás esetén a node-oknak kell definiálnimegadni a driver helyét, nem a tesztet futtató VM-nek, mivel a node-oknak el lesz küldve a teszt, azok fogják futtatni.}}<br><br> ==Teszt futtatása== Futtassuk az FirstTestCase.java-t JUnit tesztként. (Ezt az Eclipse-ből is könnyedén meg lehet tenni)  Ekkor a konzolon láthatjuk, hogy elindítja a Firefox-ot, majd végrehajtja benne a tesztet: <pre>1532016412891 geckodriver INFO geckodriver 0.21.01532016412896 geckodriver INFO Listening on 127.0.0.1:54011532016413252 mozrunner::runner INFO Running command: "/usr/bin/firefox" "-marionette" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofile.UAu8F5P60foO"... </pre> 
A Firefox-ot meg fogja nyitni. Ahogy látjuk a default helyen keresi (/usr/bin/firefox). Azonban a Firefox-ban a narancssárga címsor és mellette a kis robot fej jelzi, hogy remote kontrol üzemmódban van a browser.
* GRID: Ez egy klászeres környezet a WebDriver interfésszel készült tesztek futtatására, ami egy manager-ből (HUB) és több tesztelést végző node-ból áll. Mikor futtatjuk a WebDirver interfészt használó JAVA programunkat, akkor ahelyett hogy továbbítaná a kéréseket a böngészőnek, elküldi a HUB-nak, aki a beállításoknak megfelelően el fogja küldeni a node-okra a teszt lépéseket. A node[[File:ClipCapIt-okon vagy egy böngészőben futtatják a tesztet, vagy a natív driver-el emulálják a böngészőt ha nincs X az adott gépen. Ennek több előnye is van: egyrészt nagyban skálázható, párhuzamosítani tudjuk a nagy teszteket, másrészt használhatunk specializált node180719-okat, pl Windows + IE, Windoes + Chrome, Linux + Firefox, Android + Chrome ..180847.PNG]]
<br>
<br>
 
==HtmlUnitDriver==
{{tip|A '''HtmlUnitDriver'''-t nem kell letölteni, benne van a Selenium csomagban amit a Maven lehúz}}
This is currently the fastest and most lightweight implementation of WebDriver. As the name suggests, this is based on HtmlUnit.
 
Pros:
* Fastest implementation of WebDriver
* A pure Java solution and so it is platform independent.
* Supports Javascript
 
 
Cons
* Emulates other browser's JS behaviour (see below)
 
 
A fenti kódban csak ennyi módosítás szükséges a HtmlWebDriver használatához:
<source lang="java">
...
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
...
driver = new HtmlUnitDriver();
</source>
 
 
<br><br>
=Selenium IDE=
Többféle lehetőség is van ráAhogy azt már láthattuk a Selenium IDE (és alternatívái) elsősorban arra szolgál, hogy közvetlen elkészítsük vele a böngészőben rekordáljunk tesztünk első változatát, vagy kísérletezésre, semmi képen sem ipari tesztek futtatására. (Ez csak egy tesztetkis segédeszköz, úgy hogy mi kattingatunk a képernyőn, és teszteket a plugin közben ezt rögzíti. Lássuk a lehetőségeket. WebDriver-el kell futtatni!!)
==Selenium IDE 3 tesztek==
A Selenium 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 Selenium IDE-ben.
:[[File:ClipCapIt-180719-161423.PNG|700px]]
{{warning|A '''Selenium IDE 3'''-asnak semmi köze már a régi '''Selenium 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 Selenium IDE 2 is épített. Így nulláról újraírták a Selenium IDE-t '''WebExtensions''' API támogatással. A WebExtensions API egy szabványosított plugin API, így a Selenium IDE 3 elvileg Chrome-ban is működik<br>
<br>
==Selenium IDE alternatívák==
=Lokális =Selenium IDE alternatívák (Katalon)==Ahogy azt már láthattuk a legnagyobb baja a Selenium IDE 3-asnak az, hogy nem írták meg benne az Export funkciót, vagyis, hogy a felvett script-ből egy gombnyomással futtatható WebDriver tesztek=alapú java kódot tudjunk készíteni.  Két olyan Firefox Plugin alternatíva is létezik, amik itt a segítségünkre lehetnek:  * Kantu* Katalon Recorder (része a Kataon termékcsaládnak, de a Recorder ingyenes) Mi itt csak a Katalon recoder-el fogunk foglalkozni: :[[File:ClipCapIt-180719-170816.PNG|400px]] A Katalon felülete nagyon hasonlít a Selenium IDE 3-éhoz, minden adja magát: :[[File:ClipCapIt-180719-171759.PNG|500px]]  <br>Minden WebDriver által támogatott formátumban tudja exportálni a felvett scriptet, nekünk itt a Java az érdekes. Ott is három lehetőség közül lehet választani, attól függően, hogy a Java tesztet milyen keretrendszerrel akarjuk futtatni: * JUnit* NUnit* TestNG:[[File:ClipCapIt-180719-172334.PNG]]   Az exportált script gyakorlatilag azonnal futtatható a [[Selenium_3_architektúra#WebDriver_teszt_.C3.ADr.C3.A1sa|Webdav teszt írása]] fejezetben bemutatott környezetben. Arra kell csak figyelni, hogy a megfelelő driver-t beállítsuk a '''webdriver.gecko.driver''' system változóval. <br><br>
=GRID 2.0=
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
:[[File:ClipCapIt-180718-170118.PNG]]
A konzolon minden kék kocka egy node-ot jelképez. Benne a kis ikonok azt mondják meg, hogy a node képes Firefox és Chrome tesztek futtatására is (Ha ez Windows-on futna, az IE is itt lenne). Ez azért van így, mert nem adtunk meg külön node konfigurációt, és alapértelmezetten az összes böngészőt vállalja a node, ami elérhető a gépen. Majd a [[Szofisztik.C3.A1lt_node_konfigur.C3.A1ci.C3.B3_.28k.C3.A9pess.C3.A9gek.29|Szofisztikált node konfiguráció (képességek)]] című fejezetben láthatjuk, hogy lehet specializált node-okat létrehozni.
 
===Node===
Hozzuk létre a node-okat. A hub elérhetőségét a '''-hub''' kapcsolóval kell megadni. Ha nem a HtmlUnitDriver-t használjuk a megírt tesztünkben, akkor a node-nak meg kell adni a driver helyét is VM system paraméterekkel.
 
 
A driver helyét pont úgy kell megadni a node-nak, mint azt a lokális tesztünk esetén tettük, a driver típusának megfelelő system paramétert kell használni:
 
* '''Firefox''': -Dwebdriver.gecko.driver="..path../geckodriver"
* '''Chrome''': -Dwebdriver.chrome.driver="..path../chromedriver"
* '''IE:''' -Dwebdriver.ie.driver=""
 
{{note|A Node-nak több driver-t is meg lehet adni. Annyiféle böngészőt fog tudni támogatni, amennyi driver-t megadunk neki indításkor.}}
 
===Node1===
Hozzuk létre a node-okat. A hub elérhetőségét a '''-hub''' kapcsolóval kell megadni:
<pre>
$ java -Dwebdriver.gecko.driver="geckodriver" -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
</pre>
==Remote driver=Node2 létrehozása külső konfigurációval===A hub aszerint fogja kiosztani a teszteket a node-konak ...
Ha a HUB-on akarjuk futtatni a tesztet, akkor mindösszesen annyi különbség van a teszt írásában, hogy driver implementációnk a '''RemoteWebDriver(URL, capabilities)'''-t kell használni. Ennek két paramétere van: * '''URL''': ez a HUB-nak az elérhetősége, ahova a teszt-et küldeni kell. Ezt ki is írta a HUB induláskor a konzolra. * '''Capabilities''': A node-oknak induláskor meg lehet adni 'képességeket', mint pl azt hogy milyen böngészőkre futtathatnak tesztet. Ha nem adjunk meg 'képességet', akkor minden teszt futtatható rajtuk a hub szemszögéből nézve. A hub mindig csak a képességnek megfelelő tesztet fogja elküldeni a noder-ra. Ha a '''RemoteWebDriver'''-en azt adjuk meg hogy '''FirefoxOptions''' mint képesség, akkor csak olyan node-on fogja futtatni a tesztet, aki vagy nem állít magáról semmit, vagy szerepel a képességei között a Firefox.  <brsource lang="java">driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), new FirefoxOptions());<br/source>
==Teszt futtatása==
Hozzunk létre egy maven projektet az alábbi pomA [[Selenium_3_architektúra#WebDriver_teszt_.C3.ADr.C3.A1sa|Webdav teszt írása]] fejezetben készített teszt-et fogjuk átalakítani, úgy hogy a GRID-al: en fusson a teszt, ne közvetlenül a lokális böngészőben. <source lang="xmljava"><?xml version="1import java.net.URL; import org.junit.Before;import org.junit.Test;import org.openqa.selenium.By;import org.openqa.selenium.Keys;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxOptions;import org.openqa.selenium.remote.0" encoding="UTF-8"?>RemoteWebDriver; public class GridTest { private WebDriver driver;  @Before public void setUp() throws Exception { <project xmlns driver =new RemoteWebDriver(new URL("http://maven.apache.orglocalhost:4444/POMwd/4.0.0hub"), new FirefoxOptions());  xmlns:xsi= }  @Test public void testFirstTestCase() throws Exception { driver.get("httphttps://www.w3google.orgcom/2001/XMLSchema"); driver.findElement(By.id("lst-instanceib")).click(); xsi:schemaLocation= driver.findElement(By.id("lst-ib"http://maven)).apacheclear(); driver.org/POM/4findElement(By.0id("lst-ib")).0 http://mavensendKeys("how to use sele"); driver.apachefindElement(By.org/xsd/mavenid("lst-4ib")).0sendKeys(Keys.DOWN); driver.0findElement(By.xsdid("> <modelVersion>4lst-ib")).0sendKeys(Keys.0ENTER); }}</modelVersionsource>  <groupIdbr>test1</groupIdbr> ==Szofisztikált node konfiguráció (képességek)==A fenti példában a node-nak nem adtunk meg semmilyen képességet, így attól függetlenül, hogy a RemoteWebDriver-ben milyen képességet adtunk meg, az egy szem node-unk mindig megkapta a tesztet.   A node-oknak meg lehet adni egy külső JSON formátumú konfigurációs fájlt, ahol többek között a böngésző típus is beállítható. A config fájlt a '''-nodeConfig''' kapcsolóval kell megadni a node induláskor.  ===Konfiguráció létrehozása===Hozzuk létre konfigurációt a firefox-os node-nak: '''firefox_node.json'''<artifactId>test1</artifactIdsource lang="JSON">{ "capabilities": [ <version>1.0</version>{ "browserName": "firefox", "maxInstances": 5, "seleniumProtocol": "WebDriver" <dependencies>} <dependency> ], <groupId> "proxy": "org.seleniumhqopenqa.grid.selenium</groupId>.proxy.DefaultRemoteProxy", "maxSession": 5, "port": 6543, "host": 127.0.0.1, "register": true, "registerCycle": 5000, <artifactId>selenium-server</artifactId> "hubPort": 4444, <version>3 "hubHost": 127.130.0.1}</versionsource> A HUB a '''browserName''' mezőből fogja tudni, hogy Firefox teszt futtatására hivatott a node.   Majd egy külön konfigot a chrome-os node-nak: '''chrome_node.json'''</dependencysource lang="JSON">{ "capabilities": [ </dependencies>{ "browserName": "chrome", "maxInstances": 5, "seleniumProtocol": "WebDriver" } ]</project>}
</source>
Hozzunk létre egy új JAVA osztályt{{warning|A Selinium 3-ban a node konfig szerkezete is megváltozott, a Selenium 2-re írt konfigurációs fájlok már nem fognak itt működni! }} ===Node-ok indítása=== Állítsuk le a korábban indított node-ot, srcés indítsuk újra a '''-nodeConfig''' kapcsolóval plusz a Firefox driver-el. <pre>$ java -Dwebdriver.gecko.driver="geckodriver" -jar selenium-server-standalone-3.9.1.jar \-role node -hub http://192.168.124.1:4444/grid/register/ -nodeConfig firefox_node.json...16:43:33.194 INFO - Registering the node to the hub: http:/main/java192.168.124.1:4444/grid/ mappában (GridTest1register16:43:33.233 INFO - Updating the node configuration from the hub16:43:33.java)240 INFO - The node is registered to the hub and ready to use</pre>  Indítsunk el egy másik node-ot a Chrome driver-el, de ne adjunk meg konfigurációs fájlt: <source langpre>java -D-Dwebdriver.chrome.driver="xmlchromedriver"-jar selenium-server-standalone-3.9.1.jar \-role node -hub http://192.168.124.1:4444/grid/register/ -nodeConfig chrome_node.json...09:42:04.591 INFO - Registering the node to the hub: http://192.168.124.1:4444/grid/register09:42:04.623 INFO - Updating the node configuration from the hub09:42:04.630 INFO - The node is registered to the hub and ready to use</pre><?xml version Nyissuk meg újra a konzolt itt: http://localhost:4444/grid/console#: :[[File:ClipCapIt-180720-100916.PNG]]Láthatjuk, hogy most már két node van a képernyőn. A jobboldali az amit a Firefox config-al indítottunk. Látható, hogy csak Firefox ikonka látszik, tehát csak Firefox képességekkel rendelkezik, tehát erről sikeresen értesítette a HUB-ot, a HUB csak Firefox típusú teszteket fog ráküldeni. :[[File:ClipCapIt-180720-094940.PNG]]A bal oldalit indítottuk a chrome konfigurációval, látható hogy csak Chrome ikonka van rajta.   ===Teszt elkészítése==="1Annyi változás lesz az előzőhöz képest, hogy most két JUnit tesztet fogunk definiálni, egyet a Firefox node-nak, egyet pedig Chrome node-nak, és kiemeljük a teszt futtató részt egy külön metódusba, ahol a '''MutableCapabilities''' interfészt fogjuk használni a kapacitás megadására.0" encoding <source lang="UTF-8java"?>import java.net.URL; import org.junit.Test;import org.openqa.selenium.By;import org.openqa.selenium.Keys;import org.openqa.selenium.MutableCapabilities;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeOptions;import org.openqa.selenium.firefox.FirefoxOptions;import org.openqa.selenium.remote.RemoteWebDriver; public class GridTest2 {  @Test public void executeFirefoxDriver() throws Exception { this.execute(new FirefoxOptions()); }  @Test public void executeChrome() throws Exception { this.execute(new ChromeOptions()); }
private void execute(final MutableCapabilities brwserOptions) throws Exception {
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), brwserOptions);
driver.get("https://www.google.com/");
driver.findElement(By.id("lst-ib")).click();
driver.findElement(By.id("lst-ib")).clear();
driver.findElement(By.id("lst-ib")).sendKeys("how to use sele");
driver.findElement(By.id("lst-ib")).sendKeys(Keys.DOWN);
driver.findElement(By.id("lst-ib")).sendKeys(Keys.ENTER);
}
}
</source>
==Szofisztikált node konfiguráció==
Lehetőség van rá
===Teszt futtatása===
Ha most futtatjuk le a tesztet, akkor a két JUnit teszt egymás után le fog futni:
:[[File:ClipCapIt-180720-101824.PNG]]
https://github.com/mozilla/geckodriver/releases --> geckodriver-v0.21.0-linux64.tar.gz
{{note|Fontos hogy a 65 bites verziót töltsük le ha 64 bites az oprendszer}}
A HUB a képességeknek megfelelő node-ra fogja küldeni a tesztet:
<pre>
10:17:34.558 INFO - Got a request to create a new session: Capabilities {acceptInsecureCerts: true, browserName: firefox, moz:firefoxOptions: {args: [], prefs: {}}}
...
10:17:42.568 INFO - Got a request to create a new session: Capabilities {browserName: chrome, goog:chromeOptions: {args: [], extensions: []}}
...
</pre>
:[[File:ClipCapIt{{note|Nekem a chrome nem indult el, a teszt egy helyben állt a node2-180719ön. Azt írták, hogy nem megfelelő a driver-124810.PNG]](Firefox browser remote üzemmódban)em}}

Navigation menu