使用 Selenium WebDriver 进行跨浏览器测试

使用 Selenium 进行跨浏览器测试

跨浏览器测试是一种功能测试,用于检查您的 Web 应用程序在不同浏览器中是否按预期工作。

Cross Browser Testing Using Selenium

为什么我们需要跨浏览器测试?

基于 Web 的应用程序与 Windows 应用程序完全不同。最终用户可以在任何浏览器中打开 Web 应用程序。例如,有些人喜欢在 Firefox 浏览器中打开 https://twitter.com,而另一些人可能正在使用 Chrome 浏览器IE

在下图中,您可以看到在 IE 中,Twitter 的登录框没有显示任何圆角,但在 Chrome 浏览器中我们可以看到它。

Cross Browser Testing

因此,我们需要确保 Web 应用程序在所有主流浏览器中都能按预期工作,以便更多人可以访问和使用它。

这一目标可以通过对产品进行跨浏览器测试来实现。

跨浏览器问题的原因

  1. 不同浏览器中字体大小不匹配。
  2. JavaScript 实现可能不同。
  3. 可能存在 CSS、HTML 验证差异。
  4. 某些浏览器仍不支持 HTML5。
  5. 页面对齐和 div 大小。
  6. 图像方向。
  7. 浏览器与操作系统不兼容等。

如何进行跨浏览器测试

如果我们使用 Selenium WebDriver,我们可以使用 Internet Explorer、Firefox、Chrome、Safari 浏览器自动化测试用例。

要在同一台机器上同时使用不同浏览器执行测试用例,我们可以将 TestNG 框架与 Selenium WebDriver 集成。

您的 testing.xml 将如下所示:

Cross Browser Testing

此 testing.xml 将与 测试用例 映射,测试用例将如下所示:

Cross Browser Testing

由于 testing.xml 有两个 Test 标签('ChromeTest','FirefoxTest'),此测试用例将针对 2 个不同的浏览器执行两次。

第一个测试“ChromeTest”将把参数“browser”的值传递为“chrome”,因此将执行 ChromeDriver。此测试用例将在 Chrome 浏览器上运行。

第二个测试“FirefoxTest”将把参数“browser”的值传递为“Firefox”,因此将执行 FirefoxDriver。此测试用例将在 Firefox 浏览器上运行。

Guru99CrossBrowserScript.java

完整代码

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>

注意:要运行测试,右键单击 testing.xml,选择“运行方式”,然后单击“TestNG”。

 Cross Browser Testing

摘要

  1. 跨浏览器测试是一种使用不同 Web 浏览器测试 Web 应用程序的技术。
  2. Selenium 可以支持不同类型的跨浏览器测试工具进行自动化。
  3. Selenium 可以与 TestNG 集成以执行多浏览器测试。
  4. 我们可以从 testing.xml 中的参数传递浏览器名称,并在测试用例中相应地创建 WebDriver 引用。

注意:给定的程序在 Selenium 3.0.1、Chrome 56.0.2924.87、Firefox 47.0.2 和 Microsoft Edge 14.14393 上构建和测试。如果程序出现错误,请更新驱动程序。

下载本教程演示的 Selenium 项目文件