使用跨浏览器测试 Selenium 网络驱动程序
使用跨浏览器测试 Selenium
跨浏览器测试 是一种功能测试,用于检查您的 Web 应用程序是否在不同的浏览器中按预期运行。
为什么我们需要跨浏览器测试?
基于 Web 的应用程序与 Windows 应用程序。最终用户可以在任何浏览器中打开 Web 应用程序。例如,有些人更喜欢打开 https://twitter.com in Firefox 浏览器, 而其他人可以使用 Chrome浏览器 or IE.
在下图中,你可以观察到 IE,Twitter的登录框并没有呈现出四角弯曲的现象,但是在Chrome浏览器中我们可以看到。
因此,我们需要确保 Web 应用程序能够在所有流行的浏览器中正常运行,以便更多人可以访问和使用它。
这个动机可以通过跨浏览器来实现 测试 该产品。
跨浏览器问题的原因
- 不同浏览器中的字体大小不匹配。
- Java脚本实现可以有所不同。
- CSS、HTML 验证可能存在差异。
- 一些浏览器仍然不支持 HTML5。
- 页面对齐和 div 大小。
- 图像方向。
- 浏览器与操作系统不兼容。等等。
如何进行跨浏览器测试
如果我们正在使用 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
总结
- 跨浏览器测试是一种使用不同 Web 浏览器测试 Web 应用程序的技术。
- Selenium 可以支持不同类型的 跨浏览器测试工具 用于自动化。
- Selenium 可以与 TestNG 执行多浏览器测试。
- 我们可以将从 testing.xml 中的参数传递的浏览器名称,在测试用例中,我们可以相应地创建 WebDriver 引用。
请注意: 给定的程序是在 selenium 3.0.1、Chrome 56.0.2924.87 上构建和测试的, Firefox 47.0.2& Microsoft Edge 14.14393. 如果程序出现错误,请更新驱动程序