Cross Browser Test vha Selenium webdriver
Cross Browser Test vha Selenium
Test af tværbrowser er en form for funktionstest for at kontrollere, at din webapplikation fungerer som forventet i forskellige browsere.
Hvorfor har vi brug for test på tværs af browsere?
Web-baserede applikationer er helt anderledes end Windows applikationer. En webapplikation kan åbnes i enhver browser af slutbrugeren. For eksempel foretrækker nogle at åbne https://twitter.com in Firefox browser, mens andre kan bruge Chrome-browser or IE.
I diagrammet nedenfor kan du observere det i IE, Twitters login-boks viser ikke kurve i alle hjørner, men vi er i stand til at se det i Chrome-browseren.
Så vi skal sikre, at webapplikationen fungerer som forventet i alle populære browsere, så flere kan få adgang til den og bruge den.
Dette motiv kan opfyldes med Cross Browser Test af produktet.
Årsag Cross Browser Problemer
- Skriftstørrelsen stemmer ikke overens i forskellige browsere.
- JavaScriptimplementering kan være anderledes.
- CSS, HTML-valideringsforskel kan være der.
- Nogle browsere understøtter stadig ikke HTML5.
- Sidejustering og div-størrelse.
- Billedorientering.
- Browserinkompatibilitet med OS. Etc.
Sådan laver du test på tværs af browsere
Hvis vi bruger Selenium WebDriver, vi kan automatisere testsager ved hjælp af Internet Explorer, FireFox, Chrome, Safari-browsere.
For at udføre testcases med forskellige browsere i samme maskine på samme tid kan vi integrere TestNG rammer med Selenium WebDriver.
Din testing.xml vil se sådan ud,
Denne testing.xml vil kortlægges med Test sag som vil se sådan ud
Her fordi testing.xml har to test-tags ('ChromeTest','FirefoxTest'), vil denne testcase udføres to gange for 2 forskellige browsere.
Første test 'ChromeTest' vil videregive værdien af parameteren 'browser' som 'chrome', så ChromeDriver vil blive udført. Denne testcase kører i Chrome-browseren.
Anden prøve 'FirefoxTest' vil videregive værdien af parameteren 'browser' som 'Firefox'så FirefoxDriver vil blive udført. Denne testcase vil køre on FireFox browser.
Guru99CrossBrowserScript.java
Komplet kode:
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>
BEMÆRK VENLIGST: For at køre testen skal du højreklikke på testing.xml, Vælg Kør som, og klik TestNG
Resumé
- Test på tværs af browsere er en teknik til at teste webapplikationer med forskellige webbrowsere.
- Selenium kan understøtte forskellige typer testværktøj på tværs af browseren til automatisering.
- Selenium kan integreres med TestNG at udføre Multi Browser Test.
- Fra parametre i testing.xml kan vi videregive browsernavn, og i et testtilfælde kan vi oprette WebDriver-reference i overensstemmelse hermed.
Bemærk: Det givne program blev bygget og testet på selen 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Edge 14.14393. Hvis programmerne giver en fejl, skal du opdatere driveren
Download Selenium Projektfiler til demoen i denne vejledning