Mi az Ajax?
Az AJAX az Aszinkron JavaScript és XML rövidítést jelenti , és lehetővé teszi a weblap számára, hogy kis mennyiségű adatot lekérjen a kiszolgálóról az egész oldal újratöltése nélkül.
Az Ajax egy gyors és dinamikus weboldalak létrehozására szolgáló technika. Ez a technika aszinkron, és a Javascript és az XML kombinációját használja.
Frissíti a weboldal egyes részeit, anélkül, hogy újratöltené az egész oldalt.
Néhány híres alkalmazás, amely AJAX technikát használ, a Gmail, a Google Maps, a Facebook, a Youtube stb.
Ebben az oktatóanyagban megtanulja-
- Mi az Ajax?
- Hogyan működik az Ajax?
- Az Ajax hívás kezelése a Selenium Webdriver használatával
- Kihívások az Ajax Call kezelésében a Selenium Webdriver-ben
Hogyan működik az Ajax?
Például, amikor a beküldés gombra kattint, a JavaScript kérést küld a szervernek, értelmezi az eredményt és frissíti az aktuális képernyőt a weboldal újratöltése nélkül.
- Az Ajax-hívás a böngésző által kezdeményezett aszinkron kérés, amely közvetlenül nem eredményez oldalátállást. Ez azt jelenti, hogy ha elindít egy Ajax-kérést, a felhasználó továbbra is dolgozhat az alkalmazáson, amíg a kérelem válaszra vár.
- Az AJAX HTTP kéréseket küld az ügyféltől a szerverhez, majd a teljes oldal újratöltése nélkül feldolgozza a kiszolgáló válaszát. Tehát amikor AJAX-hívást indít, nem biztos abban, hogy a szerver mennyi időt vesz igénybe a válasz elküldéséhez .
A tesztelő szempontjából, ha ellenőrzi a megjelenítendő tartalmat vagy elemet, meg kell várnia, amíg megkapja a választ. Az AJAX hívás során az adatokat XML formátumban tárolják, és lekérik a szerverről.
Az Ajax hívás kezelése a Selenium Webdriver használatával
Az Ajax hívás kezelésének legnagyobb kihívása a weboldal betöltési idejének ismerete. Mivel a weboldal betöltése csak másodpercek töredékéig tart, a tesztelő számára nehéz az ilyen alkalmazást automatizálási eszközzel tesztelni. Ehhez a Selenium Webdriver-nek a várakozási módszert kell használnia ezen az Ajax híváson.
Tehát ennek a várakozási parancsnak a végrehajtásával a szelén felfüggeszti az aktuális teszteset végrehajtását, és megvárja a várt vagy új értéket. Amikor megjelenik az új érték vagy mező, a felfüggesztett teszteseteket a Selenium Webdriver hajtja végre.
Az alábbiakban bemutatjuk azokat a várakozási módszereket, amelyeket a Selenium Webdriver használhat
- Thread.Sleep ()
- A Thread.Sleep () nem bölcs választás, mivel a megadott időre felfüggeszti az aktuális szálat.
- Az AJAX-ban soha nem lehet biztos a pontos várakozási időben. Tehát a teszt sikertelen lesz, ha az elem nem jelenik meg a várakozási időn belül. Ezenkívül növeli az általános költségeket, mert a Thread.sleep (t) meghívása az aktuális szálat a futó várólistára helyezi át.
- A „t” idő elérése után az aktuális szál a várólistáról a kész várólistára mozog, majd egy kis időbe telik, amíg a CPU kiválasztja és fut.
- Implicit Wait ()
- Ez a módszer arra utasítja a webdrivert, hogy várjon, ha az elem nem érhető el azonnal, de ez a várakozás a böngésző nyitva tartásának teljes időtartamára érvényes lesz. Tehát bármilyen elem keresése az oldalon eltarthat az implicit várakozás idejében.
- Kifejezett várakozás ()
- Kifejezett várakozással fagyasztják le a teszt végrehajtását, amíg egy adott feltétel teljesül vagy a maximális idő el nem telik.
- WebdriverWait
- Bármilyen körülmények között használható. Ez a WebDriverWait alkalmazással érhető el az ExpectedCondition kombinációjával
- Az elem dinamikus megvárásának legjobb módja az, ha másodpercenként ellenőrzi a feltételt, és folytatja a parancsfájl következő parancsát, amint a feltétel teljesül.
De mindezen várakozásokkal az a probléma, hogy meg kell említenie a timeout egységet. Mi van, ha az elem még mindig nincs jelen az időn belül? Tehát van még egy várakozás, az úgynevezett folyékony várakozás.
- Folyékony várakozás
- Ez a Wait interfész megvalósítása, amelynek időkorlátja és lekérdezési intervalluma van. Minden FluentWait példány meghatározza a feltételre várakozás maximális idejét, valamint a feltétel ellenőrzésének gyakoriságát.
Kihívások az Ajax Call kezelésében a Selenium Webdriver-ben
- A "szünet" parancs használata az Ajax hívás kezelésében nem teljesen megbízható. A hosszú szünetidő elfogadhatatlanul lassítja a tesztet, és növeli a tesztelési időt. Ehelyett a "waitforcondition" hasznosabb lesz az Ajax alkalmazások tesztelésében.
- Nehéz felmérni az egyes Ajax alkalmazásokhoz kapcsolódó kockázatokat
- A fejlesztők számára az Ajax alkalmazás módosításának teljes szabadsága megnehezíti a tesztelési folyamatot
- Az automatizált tesztkérés létrehozása nehéz lehet a tesztelő eszközök számára, mivel az ilyen AJAX alkalmazás gyakran más kódolási vagy sorosítási technikát használ a POST adatok benyújtásához.
Példa az Ajax KEZELÉSÉRE
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;nyilvános osztály Ajaxdemo {privát karakterlánc URL = "http://demo.guru99.com/test/ajax.html";WebDriver illesztőprogram;WebDriverWait wait;@Óra előttpublic void setUp () {System.setProperty ("webdriver.chrome.driver", ". \\ chromedriver.exe");// chrome példány létrehozásaillesztőprogram = new ChromeDriver ();driver.manage (). window (). maximize ();driver.navigate (). to (URL);}@Tesztpublic void test_AjaxExample () {Tároló szerint = By.cssSelector (". Tároló");wait = új WebDriverWait (illesztőprogram, 5);várjon.ig (ExpectedConditions.presenceOfElementLocated (tároló));// A ajax hívás végrehajtása előtt szerezze be a szövegetWebElement noTextElement = driver.findElement (By.className ("rádiógomb"));String textBefore = noTextElement.getText (). Trim ();// Kattintson a választógombradriver.findElement (By.id ("igen")). kattintson ();// Kattintson az Ellenőrzés gombradriver.findElement (By.id ("buttoncheck")). kattintson ();/ * Szerezd meg a szöveget ajax hívás után * /WebElement TextElement = driver.findElement (By.clName ("rádiógomb"));várjon.ig (ExpectedConditions.visibilityOf (TextElement));String textAfter = TextElement.getText (). Trim ();/ * Ellenőrizze mindkét szöveget ajax hívás előtt és ajax hívás után. * /Assert.assertNotEquals (textBefore, textAfter);System.out.println ("Ajax hívás végrehajtva");String várhatóText = "A választógomb be van jelölve, és értéke Igen";/ * Ellenőrizze a várható szöveget az ajax hívás után frissített szöveggel * /Assert.assertEquals (textAfter, várhatóText);driver.close ();}}
Összegzés:
- Az AJAX lehetővé teszi a weblap számára, hogy kis mennyiségű adatot lekérjen a szerverről a teljes oldal újratöltése nélkül.
- Az Ajax alkalmazás teszteléséhez különböző várakozási módszereket kell alkalmazni
- ThreadSleep
- Implicit Wait
- Kifejezett várakozás
- WebdriverWait
- Folyékony várakozás
- Az automatizált tesztkérés létrehozása nehéz lehet a tesztelő eszközök számára, mivel az ilyen AJAX alkalmazás gyakran más kódolási vagy sorosítási technikát használ a POST adatok benyújtásához.