Cum se conectează în mod corespunzător seleniu și seleniu

Încerc să fac teste de Selenide în seria de seleniu. Ajută-te să înțelegi, te rog.

Pe scurt, ideea este: trebuie să rulez teste în Firefox pe versiunea 24 pe mai multe noduri (noduri pe Linux, gazdă pe Windows, dacă contează). Browserul trebuie să înceapă imediat în modul ecran complet.







Deschid browserul în rules.CommonRule (extinde ghidonul TestWatcher).

Numărul întrebării 1
Indiferent dacă fac corect, ce pentru gestionarea opțiunilor browserului descriu driverul FirefoxCustomDriver prin implementarea WebDriverProvider?

Întrebarea nr. 2
Dacă corect înțeleg că pentru aplicarea acestui driver este suficient să adăugați parametrul de sistem prin System.setProperty (); ?

Întrebarea nr. 3
De ce nu pot trece browserul la modul ecran complet folosind comanda driverului web. ferestre (); fullscreen (); ?

Acum trebuie să facem acest lucru:

Dar acum se desfășoară numai după deschiderea primei pagini. Pot configura configurația browserului să se deschidă imediat în modul ecran complet? Poate prin setările de profil sau deficiențele dorite?

Întrebarea nr. 4
Pe mașina gazdă, cresc comanda hubului Selenium Grid:

Pe nodurile Linux cresc nodul Selenium Grid prin comanda:

Nodurile sunt înregistrate cu succes în hub. Mai mult, cred că trebuie să spunem cumva proiectul în care se află hub-ul. Prin urmare, pe mașina gazdă execut încercările cu comanda:

Cu privire la ceea ce, în număr mare, primesc astfel de mesaje:

După acestea, browserul nu pornește. Unde m-am înșelat și cât de corect s-au efectuat testele în Grid?

Pentru a lucra cu grila, aveți nevoie de RemoteWebDriver. mai degrabă decât un simplu FirefoxDriver.
Da, și în opinia mea, un șofer personalizat exemplu mult mai ușor Setit în contextul Seleniură prin WebDriverRunner.setWebDriver (myWebDriver).

nu poate traduce browserul în modul ecran complet

Nu a urmărit codul sursă complet (). dar înainte de aceasta a fost suficient să se apeleze maximize ().

Judecând după documentație, cu WebDriverRunner.setWebDriver (myWebDriver) este necesar să preiați lucrul cu deschiderea / închiderea browser-ului, ceea ce nu este de dorit. Pare mult mai convenabil să luați WebDriverProvider și să continuați să utilizați Selenide în mod obișnuit.

Din câte știu, maximize () extinde fereastra browserului la dimensiunea ecranului, dar nu o traduce în modul ecran complet (ca și cum ați apăsa F11). Doar în cazul verificat - este, asta este. maximizează () nu funcționează. Și este ciudat faptul că comanda fullscreen () se comportă exact la fel.

Despre RemoteWebDriver - mulțumesc, înlocuit. Când instanți un exemplu, îl transmit imediat parametrului URL al hub-ului, dar nu ajută - am primit aceleași mesaje. Pentru eșantion, a fost eliminat parametrul -Dremote din apelul mvn. și când aceste mesaje începură să cadă din nou în consola Mavenului, astfel de greșeli au apărut brusc în consola nodului (obișnuia să fie tăcere):






Judecând după documentație, cu WebDriverRunner.setWebDriver (myWebDriver) este necesar să preiați lucrul cu deschiderea / închiderea browser-ului

Ei bine, în exemplul dvs., deschideți browserul dvs. prin apelare

Și închiderea browser-ului este la fel de ușor ca și crearea de rețele: WebDriverRunner.closeWebDriver ().

Atunci când instanți un exemplu, îl transmit imediat la parametrul URL al hub-ului, dar nu ajută

În mod logic, adresa URL este incorectă. Este necesar ca la început să se citească cum să coboriți la hub.

Ei bine, în exemplul dvs., deschideți browserul dvs. prin apelare

Și închiderea browser-ului este la fel de ușor ca și crearea de rețele: WebDriverRunner.closeWebDriver ().

Mi-e teamă să fac o greșeală, dar seleniură altfel și pentru a urmări dacă este posibil să se utilizeze un browser deja deschis la următorul test, sau este necesar să-l redescopere, fie în mod corect sau lansarea browser-ul, ar trebui să încercați să-l deschidă din nou, etc.
Toate acestea vor rămâne la Selenide sau va trebui implementate independent?

Înainte de răspunsul anterior, am aruncat și această adresă URL în cutia de nisip, privind exemplul oficial

Care este adresa URL din exemplul oficial?

Cum se conectează în mod corespunzător seleniu și seleniu

Și acum să ne uităm la original:

Să căutăm zece diferențe.

Cum se conectează în mod corespunzător seleniu și seleniu

Toate acestea vor rămâne pe Selenide sau va trebui, de asemenea, să fie implementate independent?

Dacă utilizați un driver personalizat, ar trebui cel puțin să vă conectați și să îl închideți, sunând la metodele de mai sus. Orice altceva se întâmplă deja în contextul selenidei. @asolntsev Cred că pot oferi mai multe detalii. Personal, am folosit întotdeauna un alergător personalizat. Prin urmare, nu au apărut probleme la apelarea setterului în "Înainte de închidere și în" @After. Și, în general, aici, în javadocs, este descris modul în care este necesar să se conecteze corect șoferul personalizat.

Și acum să ne uităm la original:

Să căutăm zece diferențe.

Cum se conectează în mod corespunzător seleniu și seleniu

Doar în cazul încercat:

1) specificați imediat URL-ul și în parametrul -Demote. și în cod la crearea RemoteWebDriver:

2) specificați URL-ul în parametrul -Dremote. iar în cod creați RemoteWebDriver fără un parametru URL

3) nu specificați parametrul -Dremote. dar în cod creați RemoteWebDriver cu parametrul URL

În opinia mea, opțiunea cea mai simplă și cea mai evidentă, care trebuia să fie încercată în primul rând:

  1. Depinde de dvs. să creați RemoteWebDriver înainte de a efectua testul.
  2. În același loc, sunați WebDriverRunner.setWebDriver (yourRemoteDriverInstance).
  3. La sfârșitul testului, apelați WebDriverRunner.closeWebDriver ().

Și nu-Vis și dans cu o tamburină.

O astfel de soluție funcționează, mulțumită. Ei bine, lăsați-o să rămână așa.
Dar încă încântă momentul, că același lucru nu a fost prin intermediul WebDriverProvider. Mă așteptam să evit "dansul cu o tamburină" cu el, dar sa dovedit contrariul.







Trimiteți-le prietenilor: