Cross Browser Testing pomocí Selenium webový ovladač
⚡ Chytré shrnutí
Cross Browser Testing pomocí Selenium WebDriver ověřuje, zda se webová aplikace v Chromu chová konzistentně. Firefox, Safari a Edge. Tento tutoriál ukazuje, jak je zkombinovat Selenium WebDriver s TestNG spouštět paralelní relace, ověřovat vykreslování a škálovat pokrytí napříč moderními prohlížeči pro stolní počítače a mobilní zařízení.

Proč potřebujeme testování napříč prohlížeči?
Webové aplikace se velmi liší od nativních desktopových aplikací. Webovou aplikaci může koncový uživatel otevřít v libovolném prohlížeči. Například někteří lidé dávají přednost otevírání https://twitter.com in Firefox, zatímco ostatní používají chróm, Safarinebo Microsoft Edge.
Na níže uvedeném diagramu si můžete všimnout, že ve starších prohlížečích se přihlašovací pole Twitteru zaoblené rohy nezobrazují správně, zatímco moderní Chrome rohy vykresluje tak, jak byly navrženy.
Takže musíme zajistit, aby webová aplikace fungovala podle očekávání ve všech populárních prohlížečích, aby k ní mělo přístup a mohlo ji používat více lidí.
Tohoto cíle lze dosáhnout pomocí Cross Browser. Testování produktu ve všech prohlížečích v rozsahu.
Důvody problémů napříč prohlížeči
- Nesoulad velikosti písma v různých prohlížečích.
- JavaImplementace skriptovacích enginů se v Chrome (V8) liší. Firefox (Pavoučí opice), Safari (JavaScriptCore) a Edge.
- Rozdíly v ověřování CSS a HTML, včetně zpracování prefixů dodavatelů.
- Nekonzistentní nebo částečná podpora funkcí HTML5 a ECMAScript ve starších verzích prohlížečů.
- Zarovnání stránky, změna velikosti divů a varianty vykreslování flexboxů nebo mřížky.
- Rozdíly v orientaci obrazu a barevném profilu.
- Nekompatibilita prohlížeče se základním operačním systémem, včetně zvláštností mobilního WebView. Android a iOS.
Jak provést křížové testování prohlížeče
Pokud používáme Selenium WebDriver, můžeme automatizovat testovací případy v Chromu, Firefox, Microsoft Edgea prohlížeče Safari.
Pro spuštění testovacích případů s různými prohlížeči na stejném počítači současně můžeme integrovat TestNG rámec s Selenium WebDriver. Pro širší pokrytí operačních systémů a verzí lze stejnou sadu nasměrovat na cloudové gridy, jako jsou Sauce Labs, BrowserStack nebo LambdaTest, prostřednictvím vzdáleného koncového bodu WebDriver.
Váš soubor testing.xml bude vypadat takto:
Tento soubor testing.xml se namapuje na soubor Testovací případ který vypadá takto:
Protože soubor testing.xml obsahuje více tagů Test („ChromeTest“, „FirefoxTest', 'EdgeTest'), tento testovací případ se spustí jednou pro každý prohlížeč.
První test 'ChromeTest' předá hodnotu parametru 'browser' jako 'chrome', takže bude spuštěn ChromeDriver. Tento testovací případ poběží v prohlížeči Chrome.
Druhý testFirefoxTest' předá hodnotu parametru 'browser' jako 'Firefox', takže FirefoxOvladač bude spuštěn. Tento testovací případ bude spuštěn na Firefox prohlížeč. Přidání testu Edge nebo Safari se řídí stejným vzorem.
Guru99CrossBrowserScript.java
Kompletní Code:
package parallelTest; import java.util.concurrent.TimeUnit; 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.edge.EdgeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.safari.SafariDriver; import org.testng.annotations.BeforeTest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class CrossBrowserScript { WebDriver driver; /** * This function will execute before each Test tag in testng.xml * @param browser * @throws Exception */ @BeforeTest @Parameters("browser") public void setup(String browser) throws Exception{ //Check if parameter passed from TestNG is 'firefox' if(browser.equalsIgnoreCase("firefox")){ //create firefox instance System.setProperty("webdriver.gecko.driver", ".\\geckodriver.exe"); driver = new FirefoxDriver(); } //Check if parameter passed as 'chrome' else if(browser.equalsIgnoreCase("chrome")){ //set path to chromedriver.exe System.setProperty("webdriver.chrome.driver",".\\chromedriver.exe"); //create chrome instance driver = new ChromeDriver(); } //Check if parameter passed as 'Edge' else if(browser.equalsIgnoreCase("Edge")){ //set path to msedgedriver.exe System.setProperty("webdriver.edge.driver",".\\msedgedriver.exe"); //create Edge instance driver = new EdgeDriver(); } //Check if parameter passed as 'Safari' else if(browser.equalsIgnoreCase("Safari")){ //SafariDriver ships with macOS, no driver path needed driver = new SafariDriver(); } else{ //If no browser passed throw exception throw new Exception("Browser is not correct"); } driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } @Test public void testParameterWithXML() throws InterruptedException{ driver.get("https://demo.guru99.com/V4/"); //Find user name WebElement userName = driver.findElement(By.name("uid")); //Fill user name userName.sendKeys("guru99"); //Find password WebElement password = driver.findElement(By.name("password")); //Fill password password.sendKeys("guru99"); } }
testování.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="3" parallel="tests" > <test name="ChromeTest"> <parameter name="browser" value="Chrome" /> <classes> <class name="parallelTest.CrossBrowserScript"> </class> </classes> </test> <test name="FirefoxTest"> <parameter name="browser" value="Firefox" /> <classes> <class name="parallelTest.CrossBrowserScript"> </class> </classes> </test> <test name="EdgeTest"> <parameter name="browser" value="Edge" /> <classes> <class name="parallelTest.CrossBrowserScript"> </class> </classes> </test> </suite>
POZNÁMKA: Chcete-li spustit test, klikněte pravým tlačítkem myši na testování.xml, vyberte Spustit jako a klikněte na TestNG Suite.
Škálování pomocí cloudových prohlížečových mřížek
Běh Selenium WebDriver lokálně pokrývá dva nebo tři prohlížeče, ale skuteční uživatelé přistupují k webům ze stovek kombinací operačních systémů a prohlížečů. Cloudové laboratoře, jako například Sauce Labs, BrowserStack, a Lambda test zpřístupnit vzdálený koncový bod WebDriveru. Ukažte na stejný bod Selenium testy v mřížce, předá požadované funkce pro prohlížeč, verzi, operační systém a rozlišení a sada se škáluje horizontálně bez správy lokálních ovladačů.
Moderní gridy také zobrazují funkce s podporou umělé inteligence, jako je vizuální regresní diferenciace, samoopravitelné lokátory prvků a bodování nestálosti, což snižuje režijní náklady na údržbu dlouhodobých sad pro Cross Browser Testing.
Poznámka: Daný program byl sestaven a otestován na Selenium 4, Chrom, Firefox, a Microsoft EdgePokud programy hlásí chybu, aktualizujte binární soubory ovladače tak, aby odpovídaly verzi vašeho nainstalovaného prohlížeče, nebo použijte Selenium Správce, který automaticky řeší problémy s ovladači.
stáhněte Selenium Soubory projektu pro ukázku v tomto kurzu




