Crossbrowsertesten met behulp van Selenium webdriver
Crossbrowsertesten met behulp van Selenium
Cross Browser-testen is een soort functionele test om te controleren of uw webapplicatie in verschillende browsers naar verwachting werkt.
Waarom hebben we cross-browsertests nodig?
Webgebaseerde applicaties zijn totaal anders dan Windows toepassingen. Een webapplicatie kan door de eindgebruiker in elke browser worden geopend. Sommige mensen geven er bijvoorbeeld de voorkeur aan om te openen https://twitter.com in Firefox browser, terwijl anderen het kunnen gebruiken Chrome-browser or IE.
In onderstaand schema kun je dat zien IE, het inlogvenster van Twitter vertoont niet bij alle hoeken een kromming, maar in de Chrome-browser is dit wel te zien.
We moeten er dus voor zorgen dat de webapplicatie in alle populaire browsers naar verwachting werkt, zodat meer mensen er toegang toe hebben en deze kunnen gebruiken.
Dit motief kan worden vervuld met Cross Browser Testen van het product.
Reden cross-browserproblemen
- Lettergrootte komt niet overeen in verschillende browsers.
- JavaDe implementatie van scripts kan verschillen.
- CSS- en HTML-validatieverschillen kunnen aanwezig zijn.
- Sommige browsers ondersteunen nog steeds geen HTML5.
- Pagina-uitlijning en div-grootte.
- Beeldoriëntatie.
- Browser-incompatibiliteit met besturingssysteem. Enz.
Hoe u cross-browsertests kunt uitvoeren
Als we gebruiken Selenium WebDriver, we kunnen testcases automatiseren met behulp van Internet Explorer, FireFox, Chrome, Safari-browsers.
Om testcases tegelijkertijd met verschillende browsers op dezelfde machine uit te voeren, kunnen we integreren TestNG raamwerk mee Selenium Webstuurprogramma.
Uw testen.xml ziet er zo uit:
Deze test.xml wordt in kaart gebracht met de Testgeval die er zo uit zal zien
Hier omdat de test.xml twee Test-tags heeft ('ChromeTest','FirefoxTest'), wordt deze testcase tweemaal uitgevoerd voor 2 verschillende browsers.
Eerste test 'ChromeTest' zal de waarde van parameter 'browser' doorgeven als 'chrome', zodat ChromeDriver wordt uitgevoerd. Deze testcase wordt uitgevoerd in de Chrome-browser.
Tweede proef 'FirefoxTest' zal de waarde van parameter 'browser' doorgeven als 'Firefox' Dus FirefoxDriver wordt uitgevoerd. Deze testcase wordt uitgevoerd op FireFox browser.
Guru99CrossBrowserScript.java
Volledige 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.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("http://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"); } }
testen.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>
NOTITIE: Om de test uit te voeren, klikt u met de rechtermuisknop op de testen.xml, Selecteer Uitvoeren als en klik TestNG
Samenvatting
- Cross browser Testen is een techniek om webapplicaties te testen met verschillende webbrowsers.
- Selenium kan verschillende soorten ondersteunen tool voor het testen van meerdere browsers voor automatisering.
- Selenium kan worden geïntegreerd met TestNG om multi-browsertests uit te voeren.
- Vanuit parameters in testing.xml kunnen we de browsernaam doorgeven, en in een testcase kunnen we dienovereenkomstig een WebDriver-referentie creëren.
Opmerking: Het gegeven programma is gebouwd en getest op Selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Edge 14.14393. Als de programma's een foutmelding geven, update dan het stuurprogramma
Download de Selenium Projectbestanden voor de demo in deze zelfstudie