如何在 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
=============================================== 

更新于: 2023-08-21

119 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告