geckodriver selenium tutorial
Tutorial GeckoDriver Selenium: Apreneu a utilitzar el controlador Gecko (Marionette) a Selenium
Per comprendre què és GeckoDriver, inicialment hem de conèixer Gecko i el motor del navegador web. Aquest tutorial cobreix gairebé totes les funcions relacionades amb GeckoDriver, donant-li així una visió general completa.
Per començar, feu-nos saber primer què és Gecko i què és un motor de navegador web?
Què aprendreu:
- Què és Gecko?
- Què és un motor de navegador web?
- Què és GeckoDriver?
- Per què Selenium necessita GeckoDriver?
- Com s'utilitza GeckoDriver a Selenium Project?
- GeckoDriver i TestNG
- Passos per afegir un camí a la variable ambiental PATH del sistema
- Problemes sense el controlador Gecko
- Informació addicional sobre GeckoDriver
- Conclusió
- Lectura recomanada
Què és Gecko?
Gecko és un motor de navegació web. Hi ha diverses aplicacions que requereixen Gecko. Concretament, les aplicacions desenvolupades per Mozilla Foundation i Mozilla Corporation. Gecko també és una necessitat per a molts projectes de programari de codi obert. Gecko està escrit en C ++ i JavaScript.
Les darreres versions també estan escrites a Rust. Gecko és un motor de navegador web de codi obert i gratuït.
Què és un motor de navegador web?
Web Browser Engine no és res més que un programa de programari. La funció principal d’aquest programa és recopilar el contingut (com HTML, XML, imatges) i donar format a la informació (com CSS) i mostrar aquest contingut formatat a la pantalla. El motor del navegador web també s’anomena motor de disseny o motor de representació.
Aplicacions com ara navegadors web, clients de correu electrònic, lectors de llibres electrònics, sistemes d’ajuda en línia, etc., necessiten mostrar contingut web. I per mostrar el contingut de la web, és necessari el motor del navegador web i forma part de totes aquestes aplicacions. Hi ha diferents motors de navegador web per a cada navegador web.
La taula següent mostra els navegadors web i quins motors de navegador web utilitzen.
Gecko funciona amb el següent sistema operatiu sense emulació:
- Windows
- Mac OS
- Linux
- BSD
- Unix
No pot funcionar en un sistema operatiu Symbian.
Què és GeckoDriver?
GeckoDriver és un enllaç de connexió per al vostre navegador Firefox scripts a Seleni . GeckoDriver és un servidor intermediari que ajuda a comunicar-se amb els navegadors basats en Gecko (per exemple, Firefox), per als quals proporciona API HTTP.
Per què Selenium necessita GeckoDriver?
Firefox (versió 47 i posteriors) hi ha fet alguns canvis i, per alguns motius de seguretat, no permet que cap controlador de tercers interactuï directament amb els navegadors. Per tant, no podem utilitzar Selenium2 amb les últimes versions de Firefox. Per tant, necessitem Selenium3.
Selenium3 té Marionette Driver. Selenium3 pot interactuar directament amb el navegador Firefox mitjançant un servidor intermediari, que no és res més que el GeckoDriver.
Com s'utilitza GeckoDriver a Selenium Project?
- Considerem que teniu la versió més recent de Selenium WebDriver i el navegador Firefox.
- A continuació, descarregueu el GeckoDriver des de aquí . Més tard, trieu la versió adequada per al vostre ordinador.
- Extreure arxius des de la carpeta comprimida
- Afegiu les referències de selenium3 libs al vostre projecte mitjançant: Feu clic amb el botó dret del ratolí sobre el projecte => Construeix camí => Configura compilació camí => Biblioteques => Afegeix pots externs.
- Seleccioneu Carpeta Lib => Feu clic a Clt + A => Feu clic a Obre .
- Després de vostè feu clic a obre , veureu la finestra següent:
- A continuació, feu clic a D'acord.
- Ara anem a escriure el nostre codi i a utilitzar la propietat del sistema per especificar la ruta GeckoDriver.
- Afegiu la línia següent al vostre codi:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Com copiar l'adreça del fitxer extret. - (Premeu 'Maj' des del teclat i feu clic amb el botó dret al fitxer, obtindreu una opció. Després, 'Copia l'adreça del fitxer'.))
** ( En aquest camí enganxat de còpia, assegureu-vos que hi hagi una doble barra invertida, en cas contrari, el codi tindrà un error de sintaxi.)
Prenguem un exemple
Exemple
Aquí teniu un simple script, en què obrim la pàgina web de Google en un navegador Firefox i verificem el títol de la pàgina web.
Codi1:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String() args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
Comprensió del codi
# 1) importació org.openqa.selenium.WebDriver- Aquí estem important totes les referències a la interfície de WebDriver. Més endavant, aquesta interfície WebDriver és necessària per crear un navegador nou.
# 2) importació org.openqa.selenium.firefox.FirefoxDriver- Aquí importem totes les referències a la classe FirefoxDriver.
# 3) setProperty (clau de cadena, valor de cadena) - Aquí establim la propietat del sistema proporcionant el nom de la propietat que s'anomena clau i el seu camí d'accés que s'anomena valor.
Clau -Nom de la propietat del sistema, és a dir, webdriver.gecko.driver .
Valor - Adreça del fitxer exe de Gecko Driver.
# 4) Controlador WebDriver = nou FirefoxDriver () - En aquesta línia de codi estem creant la variable de referència ‘controlador’ de WebDriver i aquesta variable de referència s’inicia mitjançant la classe FirefoxDriver. Es llançarà un perfil de Firefox sense extensions ni connectors amb la instància de Firefox.
# 5) get ('URL') - Mitjançant aquest mètode Get podem obrir l'URL especificat al navegador. Aquest mètode Get s’anomena mitjançant la variable de referència de WebDriver, és a dir, el controlador. La cadena es passa al mètode Get, el que significa que l'URL de la nostra aplicació es passa a aquest mètode Get.
# 6) manage (). Window (). Maximize () - Mitjançant aquesta línia de codi maximitzem la finestra del navegador. Tan bon punt el navegador obre l'URL especificat, es maximitza mitjançant aquesta línia.
# 7) getTitle () - Mitjançant aquesta línia de codi, podrem trobar el títol de la pàgina web. Aquest mètode també s’anomena utilitzant la variable de referència ‘controlador’ de WebDriver. Estem desant aquest títol a la variable String 'appTitle'.
# 8) Comparació: Aquí estem comparant l’appTitle (que obtindrà driver.getTitle () mètode) i el expTitle (que és 'Google') mitjançant la sentència If. És només una simple afirmació de If-else. Quan es compleixi la condició 'Si', estem imprimint el missatge 'La verificació s'ha realitzat correctament', en cas contrari, apareix el missatge 'La verificació ha fallat'.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Aquesta línia de codi tanca el navegador. Aquesta línia només tanca la finestra actual.
# 10) System.exit (0) - Aquest mètode de línia de codi s'utilitza per finalitzar la màquina virtual de Java. Per tant, es recomana tancar totes les finestres o fitxers oberts abans d’aquesta línia.
GeckoDriver i TestNG
No hi ha molta diferència en el codi, però aquí afegeixo un codi només per a la vostra referència.
EXEMPLE:
Passem a l’exemple. El nostre exemple és obrir la pàgina web de Google.com, obtenir-ne el títol i imprimir-la.
Codi2:
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
Punts que cal recordar en escriure el codi TestNG:
# 1) Utilitzeu el mètode System.setProperty (tecla de cadena, valor de cadena) dins de la funció f () igual que l'exemple anterior. En aquest exemple, l’hem escrit a la funció principal. Tot i això, a TestNG no hi ha funcions main (). Si l’escriviu fora de la funció obtindreu un error de sintaxi.
# 2) El segon més important que cal recordar és System.exit (0). No cal afegir aquesta línia de codi al vostre script TestNG. Hi ha una raó per això: després d'executar l'script TestNG, es genera una carpeta de sortida on podeu veure els informes i el resultat generats, si afegiu System.exit (0) al vostre script, aquesta carpeta (carpeta de sortida) no obtindrà generat i no podreu veure els informes.
Passos per afegir un camí a la variable ambiental PATH del sistema
- Al sistema Windows, feu clic dret a El meu ordinador o Aquest ordinador.
- Seleccioneu Propietats.
- Seleccioneu la configuració avançada del sistema.
- Feu clic al botó Variables d'entorn.
- A Variables del sistema, seleccioneu PATH.
- Feu clic al botó Edita.
- Feu clic al botó Nou
- Enganxeu la ruta del fitxer GeckoDriver.
- Feu clic a D'acord.
Problemes sense el controlador Gecko
És possible que tingueu problemes com els que es mostren a continuació.
# 1) Si utilitzeu una versió antiga de Firefox i Selenium3, obtindreu la següent excepció:
Comandem a unix amb exemples
Excepció al fil 'principal' java.lang.IllegalStateException
# 2) Si utilitzeu la versió més recent de Firefox i una versió antiga de Selenium, obtindreu la següent excepció:
org.openqa.selenium.firefox.NotConnectedException : No es pot connectar a l'amfitrió 127.0.0.1 al port 7055 després de 45000 ms
# 3) Si utilitzeu la versió més recent de Firefox i WebDriver, però no utilitzeu GeckoDriver, obtindreu la següent excepció:
Excepció al fil 'principal' java.lang.IllegalStateException: el camí d'accés a l'executable del controlador ha de ser establert per la propietat del sistema webdriver.gecko.driver; per obtenir més informació, vegeu aquí .La versió més recent es pot descarregar des de aquí .
Informació addicional sobre GeckoDriver
Com sabem, GeckoDriver és un servidor intermediari que ajuda a comunicar-se amb navegadors basats en Gecko (per exemple, Firefox), per als quals proporciona API HTTP.
Aquesta API HTTP es pot entendre mitjançant el protocol WebDriver. Hi ha alguns nodes al protocol WebDriver que inclouen extrem local, extrem remot, node intermediari i node punt final. La comunicació entre aquests nodes es descriu al protocol WebDriver.
L’extrem local és la part client del protocol WebDriver. Extrem remot significa el costat del servidor del protocol WebDriver. El node intermediari fa el paper d'un servidor intermediari. Un agent d’usuari o un programa similar posa en vigor el node punt final.
Les ordres i respostes enviades pel WebDriver a GeckoDriver es tradueixen a Marionette Protocol i després es transfereixen a Marionette Driver per GeckoDriver. Així doncs, acabem dient que GeckoDriver actua com a servidor intermediari entre aquests dos WebDriver i Marionette.
La marioneta es divideix en 2 parts, que és la part del servidor i la part del client. Els ordres que envia la part client els executa la part servidor.
Aquest treball d’execució d’ordres es realitza dins del navegador. Marionette no és res més que una combinació d’un component gecko (que és un servidor Marionette) i un component extern (que s’anomena client Marionette). GeckoDriver està escrit en llenguatge de programació Rust.
Conclusió
GeckoDriver és un factor intermedi entre els vostres scripts Selenium i els navegadors basats en Gecko com Firefox.
GeckoDriver és un servidor intermediari per comunicar-se amb navegadors basats en Gecko ( Per exemple. Firefox). Firefox (versió 47 i posteriors) ha fet alguns canvis, cosa que ha provocat la prevenció del suport a controladors de tercers per interactuar directament amb els navegadors.
Aquesta és la raó principal per la qual hem d’utilitzar el GeckoDriver. La forma més senzilla d'utilitzar GeckoDriver al vostre script és implementar l'ús de Propietat System.set. (System.setProperty ('webdriver.gecko.driver', 'Camí del fitxer del controlador Gecko')).
Ets nou a GeckoDriver? Heu après alguna cosa nova avui en aquest GeckoDriver Selenium? O teniu alguna cosa interessant per compartir amb nosaltres sobre GeckoDriver? No dubteu a expressar els vostres pensaments a la secció de comentaris següent.
Lectura recomanada
- Tutorial de Cogombre Selenium: Integració de Cogombre Java Selenium WebDriver
- Introducció a Selenium WebDriver - Tutorial Selenium núm. 8
- Tutorial Selenium Find Element By Text amb exemples
- Implementació del nostre primer script WebDriver - Tutorial Selenium WebDriver # 10
- Com gestionar les alertes / finestres emergents a Selenium WebDriver - Tutorial Selenium núm. 16
- Configuració i instal·lació senceres de WebDriver amb Eclipse - Selenium Tutorial # 9
- Tutorials Eclipse en profunditat per a principiants
- Escenaris de scripts i resolució de problemes de Selenium eficients: Tutorial Selenium núm. 27