Mis on Ajax?
AJAX tähistab asünkroonset JavaScripti ja XML-i ning see võimaldab veebilehel serverist väikesi andmehulki laadida ilma kogu lehte uuesti laadimata.
Ajax on tehnika, mida kasutatakse kiirete ja dünaamiliste veebilehtede loomiseks. See tehnika on asünkroonne ja kasutab Javascripti ja XML-i kombinatsiooni.
See värskendab veebilehe osa / osi ilma kogu lehte uuesti laadimata.
Mõned kuulsad AJAX-tehnikat kasutavad rakendused on Gmail, Google Maps, Facebook, Youtube jne.
Selles õpetuses saate teada
- Mis on Ajax?
- Kuidas Ajax töötab?
- Ajaxi kõne haldamine seleenveebidraiveri abil
- Väljakutsed Ajaxi kõne käitlemisel Seleeni veebidraiveris
Kuidas Ajax töötab?
Näiteks kui klõpsate nupul Esita, esitab JavaScript serverile päringu, tõlgendab tulemust ja värskendab praegust ekraani ilma veebilehte uuesti laadimata.
- Ajaxi kõne on brauseri algatatud asünkroonne taotlus, mis otseselt lehe üleminekut ei too. See tähendab, et kui käivitate Ajaxi päringu, saab kasutaja siiski rakendusega töötada, kui taotlus vastust ootab.
- AJAX saadab kliendilt HTTP-päringud serverile ja seejärel töötleb serveri vastust ilma kogu lehte uuesti laadimata. Nii et kui teete AJAX-kõne, pole te päris kindel, kui palju aega võtab server teile vastuse saatmiseks .
Testija vaatepunktist peate kuvatava sisu või elemendi kontrollimisel ootama, kuni saate vastuse. AJAX-kõne ajal salvestatakse andmed XML-vormingus ja leitakse serverist.
Ajaxi kõne haldamine seleenveebidraiveri abil
Suurim väljakutse käitlemise Ajax kõne on teada laadimise aeg veebilehel. Kuna veebilehe laadimine kestab vaid murdosa sekundit, on testijal sellist rakendust automaatikatööriista abil keeruline testida. Selleks peab Selenium Webdriver kasutama selle Ajaxi kõne ootemeetodit.
Niisiis peatab seleen selle ootelkäsu täitmisega praeguse testjuhtumi täitmise ja ootab oodatud või uut väärtust. Uue väärtuse või välja ilmumisel täidab peatatud testijuhud Selenium Webdriver.
Järgnevalt on toodud ootemeetodid, mida Selenium Webdriver saab kasutada
- Thread.Sleep ()
- Thread.Sleep () ei ole tark valik, kuna see peatab praeguse lõime määratud aja jooksul.
- AJAXis ei saa kunagi täpse ooteaja suhtes kindel olla. Niisiis, teie test ebaõnnestub, kui element ei ilmu ooteaja jooksul. Veelgi enam, see suurendab üldkulusid, kuna Thread.sleep (t) kutsumine muudab praeguse lõime liikumise jooksvast järjekorrast ootejärjekorda.
- Pärast aja „t“ saabumist liigub praegune lõim ooterežiimist valmisjärjekorda ning seejärel võtab protsessori valimine ja töötamine aega.
- Kaudne ootamine ()
- See meetod käsib veebidraiveril oodata, kui element pole kohe saadaval, kuid see ootamine kehtib kogu brauseri avatud aja. Nii et iga lehe elementide otsimine võib võtta aega, millele vaikimisi ootamine on määratud.
- Selgesõnaline ootamine ()
- Selget ootamist kasutatakse testi täitmise külmutamiseks kuni konkreetse tingimuse täitmiseni või maksimaalse aja möödumiseni.
- Veebidraiver Oota
- Seda saab kasutada mis tahes tingimustel. Seda saab saavutada WebDriverWaitiga koos ExpectedConditioniga
- Parim viis elemendi dünaamiliseks ootamiseks on iga sekundi tingimuse kontrollimine ja jätkamine skripti järgmise käsu juurde niipea, kui tingimus on täidetud.
Kuid kõigi nende ootamiste probleem on see, et peate mainima aegumise ühikut. Mis siis, kui elementi pole aja jooksul ikka veel olemas? Nii et on veel üks ootamine, mida nimetatakse sujuvaks ootamiseks.
- Sujuv ootamine
- See on Wait-liidese rakendus, millel on oma ajalõpp ja küsitlusintervall. Iga FluentWait-eksemplar määrab tingimuse ootamise maksimaalse aja ning ka tingimuse kontrollimise sageduse.
Väljakutsed Ajaxi kõne käitlemisel Seleeni veebidraiveris
- Ajaxi kõne haldamiseks käsu "paus" kasutamine pole täiesti usaldusväärne. Pikk pausi aeg muudab testi lubamatult aeglaseks ja pikendab testimise aega. Selle asemel on Ajaxi rakenduste testimisel abiks "ootetingimus".
- Ajaxi rakendustega seotud riske on raske hinnata
- Arendajatele täielik vabadus Ajaxi rakendust muuta muudab testimisprotsessi keerukaks
- Automaatse testitaotluse loomine võib tööriistade testimiseks olla keeruline, kuna selline AJAX-i rakendus kasutab POST-andmete esitamiseks sageli erinevat kodeerimis- või seeriatehnikat.
Näide Ajaxi käsitsemisest
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.support.ui.ExpectedConditions;import org.openqa.selenium.support.ui.WebDriverWait;import org.testng.Assert;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;avalik klass Ajaxdemo {privaatstringi URL = "http://demo.guru99.com/test/ajax.html";WebDriveri draiver;WebDriverWait wait;@BeforeClasspublic void setUp () {System.setProperty ("veebidraiver.chrome.driver", ". \\ chromedriver.exe");// kroomi eksemplari loominedraiver = uus ChromeDriver ();draiver.halda (). aken (). maksimeeri ();driver.navigate (). to (URL);}@Testpublic void test_AjaxExample () {Konteineri järgi = By.cssSelector (". Konteiner");oot = uus WebDriverWait (draiver, 5);ootama kuni (ExpectedConditions.presenceOfElementLocated (konteiner));// Hankige tekst enne ajax-kõne sooritamistWebElement noTextElement = driver.findElement (By.clName ("raadionupp"));String textBefore = noTextElement.getText (). Trim ();// Klõpsake raadionuppudriver.findElement (By.id ("jah")). klõpsake ();// Klõpsake nuppu Kontrollidriver.findElement (By.id ("nupuvajutus")). klõpsake ();/ * Hankige tekst pärast ajax kõnet * /WebElement TextElement = driver.findElement (By.clName ("raadionupp"));ootama kuni (ExpectedConditions.visibilityOf (TextElement));String textAfter = TextElement.getText (). Trim ();/ * Kontrollige mõlemat teksti enne ajax kõnet ja pärast ajax kõne teksti. * /Assert.assertNotEquals (textBefore, textAfter);System.out.println ("Ajaxi kõne sooritatud");String eeldatavText = "Raadionupp on kontrollitud ja selle väärtus on Jah";/ * Kontrollige oodatavat teksti pärast ajax-kõnet värskendatud teksti * /Assert.assertEquals (textAfter, eeldatavText);juht.sule ();}}
Kokkuvõte:
- AJAX võimaldab veebisaidil laadida serverist väikseid andmehulki kogu lehte uuesti laadimata.
- Ajaxi rakenduse testimiseks tuleks rakendada erinevaid ootemeetodeid
- ThreadSleep
- Kaudne ootamine
- Selgesõnaline ootamine
- Veebidraiver Oota
- Sujuv ootamine
- Automaatse testitaotluse loomine võib tööriistade testimiseks olla keeruline, kuna selline AJAX-i rakendus kasutab POST-andmete esitamiseks sageli erinevat kodeerimis- või seeriatehnikat.