如何在 Selenium 中使用 TestNG 进行跨浏览器测试?
TestNG 是一个强大的测试框架,是 JUnit 的增强版本,JUnit 在 TestNG 出现之前很长时间内一直被使用。NG 代表“下一代”。
网站应该在多个浏览器(如 IE、Chrome、Firefox、Safari)中进行测试,以验证网站的兼容性和功能。由于 HTML、CSS 和 JavaScript 在所有浏览器中都是唯一的,因此始终建议进行跨浏览器测试以确保网站的兼容性。Selenium 支持跨浏览器测试,TestNG 也支持。
在本文中,我们将分析如何在 Selenium 中使用 TestNG 执行跨浏览器测试。
解决此问题的方法/算法
步骤 1:确保 Selenium、TestNG 和不同浏览器的初始设置(如 Firefox、IE、Chrome 驱动程序)已正确设置在系统中。
步骤 2:创建一个 TestNG 类并编写如程序代码中所示的 Selenium 代码。
参数(“Browser”)将从 testng.xml 中读取值并将其传递给代码。
launchapp() 将为浏览器启动网站 http://www.calculator.net 设置所有初始步骤。
CalculatePercent 将执行实际执行和验证。
步骤 3:创建 testng.xml 文件,参数名称为浏览器,如 testng.xml 部分所示。
步骤 4:运行 testng.xml 文件。
步骤 5:它将同时在所有 3 个浏览器中运行测试用例。
示例
以下代码用于创建包含 Selenium 代码的 TestNG 类。
import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import java.util.concurrent.TimeUnit; import org.openqa.selenium.*; import org.testng.annotations.*; public class TestNGClass { private WebDriver driver; private String URL = "http://www.calculator.net"; @Parameters("browser") @BeforeTest public void launchapp(String browser) { if (browser.equalsIgnoreCase("firefox")) { System.out.println(" Executing on FireFox"); driver = new FirefoxDriver(); driver.get(URL); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.manage().window().maximize(); } else if (browser.equalsIgnoreCase("chrome")) { System.out.println(" Executing on CHROME"); System.out.println("Executing on IE"); System.setProperty("webdriver.chrome.driver", "D:\chromedriver.exe"); driver = new ChromeDriver(); driver.get(URL); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.manage().window().maximize(); } else if (browser.equalsIgnoreCase("ie")) { System.out.println("Executing on IE"); System.setProperty("webdriver.ie.driver", "D:\IEDriverServer.exe"); driver = new InternetExplorerDriver(); driver.get(URL); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.manage().window().maximize(); } else { throw new IllegalArgumentException("The Browser Type is Undefined"); } } @Test public void calculatepercent() { // Click on Math Calculators driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click(); // Click on Percent Calculators driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click(); // Enter value 10 in the first number of the percent Calculator driver.findElement(By.id("cpar1")).sendKeys("10"); // Enter value 50 in the second number of the percent Calculator driver.findElement(By.id("cpar2")).sendKeys("50"); // Click Calculate Button driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr/td[2]/input")).click(); // Get the Result Text based on its xpath String result = driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/span/font/b")).getText(); // Print a Log In message to the screen System.out.println(" The Result is " + result); if(result.equals("5")) { System.out.println(" The Result is Pass"); } else { System.out.println(" The Result is Fail"); } } @AfterTest public void closeBrowser() { driver.close(); } }
testng.xml
这是一个用于组织和运行 TestNG 测试用例的配置文件。
当需要执行有限的测试而不是完整套件时,它非常方便。
示例
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "<a href="http://testng.org/testng-1.0.dtd">http://testng.org/testng-1.0.dtd</a>"> <suite name="TestSuite" thread-count="3" parallel="tests" > <test name="ChromeTest"> <parameter name="browser" value="chrome"/> <classes> <class name="TestNGClass "> </class> </classes> </test> <test name="FirefoxTest"> <parameter name="browser" value="firefox" /> <classes> <class name="TestNGClass"> </class> </classes> </test> <test name="ie"> <parameter name="browser" value="ie" /> <classes> <class name="TestNGClass"> </class> </classes> </test> </suite>
输出
[TestNG] Running: C://Users/************** Executing on CHROME Executing on IE Executing on FIREFOX The Result is 5 The Result is Pass The Result is 5 The Result is Pass The Result is 5 The Result is Pass =============================================== Suite1 Total tests run: 3, Passes: 3, Failures: 0, Skips: 0 ===============================================
广告