使用跨浏览器测试 Selenium 网络驱动程序

使用跨浏览器测试 Selenium

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

使用跨浏览器测试 Selenium

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

基于 Web 的应用程序与 Windows 应用程序。最终用户可以在任何浏览器中打开 Web 应用程序。例如,有些人更喜欢打开 https://twitter.com in Firefox 浏览器, 而其他人可以使用 Chrome浏览器 or IE.

在下图中,你可以观察到 IE,Twitter的登录框并没有呈现出四角弯曲的现象,但是在Chrome浏览器中我们可以看到。

跨浏览器测试

因此,我们需要确保 Web 应用程序能够在所有流行的浏览器中正常运行,以便更多人可以访问和使用它。

这个动机可以通过跨浏览器来实现 测试 该产品。

跨浏览器问题的原因

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

如何进行跨浏览器测试

如果我们正在使用 Selenium WebDriver,我们可以使用 Internet Explorer、FireFox、Chrome、Safari 浏览器。

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

你的 testing.xml 看起来会像这样,

跨浏览器测试

此 testing.xml 将与 测试用例 看起来就像这样

跨浏览器测试

这里因为 testing.xml 有两个测试标签('ChromeTest'、'FirefoxTest'),这个测试用例会针对2个不同的浏览器执行两次。

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

第二次测试Firefox测试’将传递参数‘浏览器’的值作为’Firefox' 所以 Firefox驱动程序将被执行。此测试用例将在 Fire 上运行Fox 浏览器。

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");
	}
}

测试.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>

注意: 要运行测试,请右键单击 测试.xml, 选择“以...身份运行”,然后单击 TestNG

跨浏览器测试

总结

  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 本教程中演示的项目文件

每日Guru99新闻简报

通过立即获取最新、最重要的人工智能新闻报道来开始您的一天。