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.

Test pรฅ tvรฆrs af browsere ved hjรฆlp af Selenium

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.

Test af tvรฆrbrowser

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

  1. Skriftstรธrrelsen stemmer ikke overens i forskellige browsere.
  2. JavaScriptimplementering kan vรฆre anderledes.
  3. CSS, HTML-valideringsforskel kan vรฆre der.
  4. Nogle browsere understรธtter stadig ikke HTML5.
  5. Sidejustering og div-stรธrrelse.
  6. Billedorientering.
  7. 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,

Test af tvรฆrbrowser

Denne testing.xml vil kortlรฆgges med Test sag som vil se sรฅdan ud

Test af tvรฆrbrowser

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

 Test af tvรฆrbrowser

Resumรฉ

  1. Test pรฅ tvรฆrs af browsere er en teknik til at teste webapplikationer med forskellige webbrowsere.
  2. Selenium kan understรธtte forskellige typer testvรฆrktรธj pรฅ tvรฆrs af browseren til automatisering.
  3. Selenium kan integreres med TestNG at udfรธre Multi Browser Test.
  4. 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

Opsummer dette indlรฆg med: