Kaip valdyti AJAX skambutį „Selenium Webdriver“

Kas yra „Ajax“?

AJAX reiškia asinchroninį „JavaScript“ ir XML, ir tai leidžia tinklalapiui iš serverio gauti nedidelius duomenų kiekius, neperkraunant viso puslapio.

„Ajax“ yra technika, naudojama kuriant greitus ir dinamiškus tinklalapius. Ši technika yra asinchroninė ir naudojama „Javascript“ ir XML derinys.

Jis atnaujins tinklalapio dalį (-es), iš naujo neįkeldamas viso puslapio.

Kai kurios žinomos programos, naudojančios AJAX techniką, yra „Gmail“, „Google Maps“, „Facebook“, „Youtube“ ir kt.

Šioje pamokoje sužinosite

  • Kas yra „Ajax“?
  • Kaip veikia „Ajax“?
  • Kaip valdyti „Ajax“ skambutį naudojant „Selenium Webdriver“
  • „Ajax“ skambučio tvarkymo iššūkiai „Selenium Webdriver“

Kaip veikia „Ajax“?

Pvz., Kai spustelėsite mygtuką „Pateikti“, „JavaScript“ pateiks užklausą serveriui, interpretuos rezultatą ir atnaujins dabartinį ekraną neperkraunant tinklalapio.

  • „Ajax“ skambutis yra asinchroninė užklausa, kurią inicijuoja naršyklė ir kuri tiesiogiai neveda į puslapio perėjimą. Tai reiškia, kad jei suaktyvinate „Ajax“ užklausą, vartotojas vis tiek gali dirbti su programa, kol užklausa laukia atsakymo.
  • AJAX siunčia HTTP užklausas iš kliento į serverį ir tada apdoroja serverio atsakymą, neperkraunant viso puslapio. Taigi, skambindami AJAX, nesate tikri dėl serverio laiko, per kurį jums bus atsiųstas atsakymas .

Testuotojo požiūriu, jei tikrinate rodomą turinį ar elementą, turite palaukti, kol gausite atsakymą. AJAX skambučio metu duomenys saugomi XML formatu ir gaunami iš serverio.

Kaip valdyti „Ajax“ skambutį naudojant „Selenium Webdriver“

Didžiausias iššūkis dirbant su Ajax skambutis žinant pakrovimo laiką internetiniame puslapyje. Kadangi tinklalapio įkėlimas truks tik kelias sekundes, testuotojui sunku išbandyti tokią programą naudojant automatikos įrankį. Tam „Selenium Webdriver“ turi naudoti laukimo metodą šiame „Ajax“ kvietime.

Taigi, vykdydamas šią laukimo komandą, selenas sustabdys dabartinės „Test Case“ vykdymą ir laukia laukiamos ar naujos vertės. Kai pasirodys nauja reikšmė ar laukas, sustabdytus bandymo atvejus atliks „Selenium Webdriver“.

Toliau pateikiami laukimo metodai, kuriuos gali naudoti „Selenium Webdriver“

  1. Siūlai. Miegoti ()
  • „Thread.Sleep“) nėra išmintingas pasirinkimas, nes jis sustabdo dabartinę giją nurodytą laiką.
  • AJAX sistemoje niekada negali būti tikras dėl tikslaus laukimo laiko. Taigi, bandymas nepavyks, jei elementas nebus parodytas per laukimo laiką. Be to, tai padidina pridėtines išlaidas, nes iškvietus Thread.sleep (t) dabartinė gija bus perkelta iš einančios į laukiančią eilę.
  • Pasibaigus laikui „t“, dabartinė gija pereis iš laukimo eilės į parengtąją eilę, o tada užtruks šiek tiek laiko, kol ją pasirinks CPU ir ji veiks.
  1. Numanomas laukimas ()
  • Šis metodas nurodo žiniatinklio tvarkyklę palaukti, jei elementas nepasiekiamas iš karto, tačiau šis laukimas bus atliktas visą naršyklės atidarymo laiką. Taigi bet kokia puslapio elementų paieška gali užtrukti numanomą laukimą.
  1. Aiškus laukimas ()
  • Aiškus laukimas naudojamas bandymo vykdymo sustabdymui, kol bus įvykdyta tam tikra sąlyga arba pasibaigs maksimalus laikas.
  1. WebdriverPalaukite
  • Jis gali būti naudojamas bet kokioms sąlygoms. Tai galima pasiekti naudojant „WebDriverWait“ kartu su „ExpectedCondition“
  • Geriausias būdas dinamiškai laukti elemento - patikrinti sąlygą kas sekundę ir tęsti kitą komandą scenarijuje, kai tik įvykdoma sąlyga.

Visų šių laukimų problema yra ta, kad turite paminėti skirtojo laiko vienetą. Ką daryti, jei elemento vis tiek nėra per tą laiką? Taigi yra dar vienas laukimas, vadinamas „Sklandus laukimas“.

  1. Sklandus laukimas
  • Tai yra laukimo sąsajos, turinčios skirtąjį laiką ir apklausos intervalą, įgyvendinimas. Kiekvienas „FluentWait“ egzempliorius nustato maksimalų laiko laukimo laiką, taip pat dažnį, kuriuo reikia patikrinti sąlygą.

„Ajax“ skambučio tvarkymo iššūkiai „Selenium Webdriver“

  • „Pauzės“ komandos naudojimas tvarkant „Ajax“ skambutį nėra visiškai patikimas. Ilgos pauzės metu testas tampa nepriimtinai lėtas ir pailgėja testavimo laikas. „Laukimo sąlygos“ bus naudingesnės bandant „Ajax“ programas.
  • Sunku įvertinti riziką, susijusią su konkrečiomis „Ajax“ programomis
  • Suteikus visišką kūrėjų laisvę modifikuoti „Ajax“ programą, testavimo procesas tampa sudėtingas
  • Kurti automatizuotą bandymo užklausą gali būti sunku testavimo įrankiams, nes tokioje AJAX programoje POST duomenims pateikti dažnai naudojama skirtinga kodavimo ar serijinės technikos technika.

„Ajax“ Tvarkymo pavyzdys

importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.WebElement;importuoti org.openqa.selenium.chrome.ChromeDriver;importuoti org.openqa.selenium.support.ui.ExpectedConditions;importuoti org.openqa.selenium.support.ui.WebDriverWait;importuoti org.testng.Assert;importuoti org.testng.annotations.BeforeClass;importuoti org.testng.annotations.Test;viešosios klasės „Ajaxdemo“ {privati ​​eilutė URL = "http://demo.guru99.com/test/ajax.html";„WebDriver“ tvarkyklė;„WebDriverWait“ palaukite;@BeforeClasspublic void setUp () {System.setProperty ("webdriver.chrome.driver", ". \\ chromedriver.exe");// sukurti chromo egzemplioriųtvarkyklė = naujas „ChromeDriver“ ();vairuotojas.tvarkyti (). langas (). padidinti ();tvarkyklė.navigate (). to (URL);}@Testpublic void test_AjaxExample () {Pagal konteinerį = By.cssSelector (". Container");laukti = naujas „WebDriverWait“ (tvarkyklė, 5);palaukti, kol (ExpectedConditions.presenceOfElementLocated (konteineris));// Gaukite tekstą prieš atlikdami ajax skambutįWebElement noTextElement = driver.findElement (By.className ("radijo mygtukas"));String textBefore = noTextElement.getText (). Trim ();// Spustelėkite radijo mygtukądriver.findElement (By.id ("taip")). spustelėkite ();// Spustelėkite mygtuką Tikrintidriver.findElement (By.id ("mygtuko patikrinimas")). spustelėkite ();/ * Gaukite tekstą po „ajax“ skambučio * /WebElement TextElement = driver.findElement (By.clName ("radijo mygtukas"));palaukti, kol (ExpectedConditions.visibilityOf (TextElement));String textAfter = TextElement.getText (). Trim ();/ * Patikrinkite abu tekstus prieš „ajax“ skambutį ir po „ajax“ skambučio teksto. * /„Assert.assertNotEquals“ (textBefore, textAfter);System.out.println („Atliktas„ Ajax “skambutis);String várhatóText = "Pažymėtas radijo mygtukas ir jo vertė yra Taip";/ * Patikrinkite numatomą tekstą su tekstu, atnaujintu po „ajax“ skambučio * /„Assert.assertEquals“ (textAfter, numatomasText);vairuotojas.uždaryti ();}}

Santrauka:

  • AJAX leidžia tinklalapiui iš serverio gauti nedidelius duomenų kiekius, neperkraunant viso puslapio.
  • Norint išbandyti „Ajax“ taikymą, reikia taikyti skirtingus laukimo metodus
    • ThreadSleep
    • Numanomas laukimas
    • Aiškus laukimas
    • WebdriverPalaukite
    • Sklandus laukimas
  • Kurti automatizuotą bandymo užklausą gali būti sunku testavimo įrankiams, nes tokioje AJAX programoje POST duomenims pateikti dažnai naudojama skirtinga kodavimo ar serijinės technikos technika.

Įdomios straipsniai...