Changes

Jump to: navigation, search

Selenium 3 architektúra

3,014 bytes added, 16:42, 20 July 2018
Szofisztikált node konfiguráció (képességek)
}
</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 [[SeliniumSelenium_3_architektúra#GRID_2.0|Grid 2.0]] fejezetben, hogy grid-es futtatás esetén a node-oknak kell megadni 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>
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 (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 alapú java kódot tudjunk készíteni.
Az exportált script gyakorlatilag azonnal futtatható a [[SeliniumSelenium_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>
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===
A [[SeliniumSelenium_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-en fusson a teszt, ne közvetlenül a lokális böngészőben.
<source lang="java">
import java.net.URL;
</source>
 
<br><br>
==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.
===Konfiguráció létrehozása===
Hozzuk létre az alábbi konfigurációs fájltkonfigurációt a firefox-os node-nak: '''firefox_node.json'''
<source lang="JSON">
{
}
</source>
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'''
<source lang="JSON">
{
"capabilities":
[
{
"browserName": "chrome",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
}
]
}
</source>
 
 
{{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===
<pre>
java -D-Dwebdriver.chrome.driver="chromedriver" -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/register
Nyissuk meg újra a konzolt itt: http://localhost:4444/grid/console#:
:[[File:ClipCapIt-180720-094816100916.PNG]]Láthatjuk, hogy most már két node van a képernyőn. A jobboldali az amit -nodeConfiga 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 jobb oldali node bal oldalit indítottuk a chrome konfigurációval, látható hogy csak Chrome ikonka van rajta.   ===Teszt elkészítése===Annyi változás lesz az amit config nélkül indítottunk. Nála látszik 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 Firefox tesztek futtatását is vállalja 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.  <source lang="java">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(annak ellenére"http://localhost:4444/wd/hub"), hogy Firefox 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-t nem is kapott, de ezt ő nem tudjaib")).sendKeys(Keys.ENTER); }}</source> 
===Teszt futtatása===
 Ha most futtatjuk le a tesztet, akkor a két JUnit teszt egymás után le fog futni: :[[File:ClipCapIt-180719180720-124810101824.PNG]](Firefox browser remote üzemmódban) 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>   {{note|Nekem a chrome nem indult el, a teszt egy helyben állt a node2-ön. Azt írták, hogy nem megfelelő a driver-em}}

Navigation menu