Hogyan kezeljük az AJAX hívást a szelén webdriverben

Tartalomjegyzék:

Anonim

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

  1. 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.
  1. 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.
  1. 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.
  1. 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.

  1. 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.