Cross Browser Testing med Selenium webbdrivrutin
Cross Browser Testing med Selenium
Testning mellan webbläsare är en typ av funktionstest för att kontrollera att din webbapplikation fungerar som förväntat i olika webbläsare.
Varför behöver vi testa över webbläsare?
Webbaserade applikationer är helt annorlunda än Windows applikationer. En webbapplikation kan öppnas i vilken webbläsare som helst av slutanvändaren. Vissa föredrar till exempel att öppna https://twitter.com in Firefox webbläsare, medan andra kan använda Chrome-webbläsare or IE.
I diagrammet nedan kan du observera det i IE, Twitters inloggningsruta visar inte kurvor i alla hörn, men vi kan se det i webbläsaren Chrome.
Så vi måste se till att webbapplikationen fungerar som förväntat i alla populära webbläsare så att fler kan komma åt den och använda den.
Detta motiv kan uppfyllas med Cross Browser Testning av produkten.
Orsak Cross Browser Issues
- Teckenstorleken matchar inte i olika webbläsare.
- JavaSkriptimplementeringen kan vara annorlunda.
- Skillnad i CSS, HTML-validering kan finnas där.
- Vissa webbläsare stöder fortfarande inte HTML5.
- Sidjustering och div-storlek.
- Bildorientering.
- Webbläsarinkompatibilitet med OS. Etc.
Hur man gör crossbrowser-testning
Om vi använder Selenium WebDriver, vi kan automatisera testfall med Internet Explorer, FireFox, Chrome, Safari webbläsare.
För att utföra testfall med olika webbläsare i samma maskin samtidigt kan vi integrera TestNG ram med Selenium WebDriver.
Din testing.xml kommer att se ut så,
Denna testing.xml kommer att mappas med Testfall som kommer att se ut så
Här eftersom testing.xml har två testtaggar ('ChromeTest','FirefoxTest'), kommer detta testfall att köras två gånger för två olika webbläsare.
Första testet 'ChromeTest' kommer att skicka värdet för parametern 'webbläsare' som 'chrome' så att ChromeDriver kommer att köras. Detta testfall kommer att köras i webbläsaren Chrome.
Andra testet 'FirefoxTest' kommer att skicka värdet för parametern 'webbläsare' som 'Firefox' så FirefoxDrivrutinen kommer att köras. Detta testfall kommer att köras on FireFox webbläsare.
Guru99CrossBrowserScript.java
Komplett kod:
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.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 Edge.exe System.setProperty("webdriver.edge.driver",".\\MicrosoftWebDriver.exe"); //create Edge instance driver = new EdgeDriver(); } 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"); } }
testing.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="2" 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>
OBS: För att köra testet, högerklicka på testing.xml, Välj Kör som och klicka TestNG
Sammanfattning
- Cross browser Testing är en teknik för att testa webbapplikationer med olika webbläsare.
- Selenium kan stödja olika typer av testverktyg för flera webbläsare för automatisering.
- Selenium kan integreras med TestNG för att utföra Multi Browser Testing.
- Från parametrar i testing.xml kan vi skicka webbläsarnamn, och i ett testfall kan vi skapa WebDriver-referens i enlighet med detta.
Obs: Det givna programmet byggdes och testades på selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Edge 14.14393. Om programmen ger ett fel, vänligen uppdatera drivrutinen
ladda ner Selenium Projektfiler för demon i denna handledning