如何使用 Selenium 在同一浏览器中同时但使用不同的实例运行多个 TestNG.XML 文件

问题描述 投票:0回答:1

如何使用 Selenium 在同一浏览器中同时使用不同的实例运行多个 TestNG.XML 文件。

我的 testng.xml 文件测试套件中有大量测试类。

Testng.xml1

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite1.xml">
    <test name="Test Cases1">
        <classes>
            <class name="com.test1" />
        </classes>
    </test>
        <test name="Test Cases2">
        <classes>
            <class name="com.test2" />
        </classes>
    </test>
</suite>

Testng.xml2

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite2.xml">

    <test name="Test Cases1">
        <classes>
            <class name="com.test1" />
        </classes>
    </test>
        <test name="Test Cases2">
        <classes>
            <class name="com.test2" />
        </classes>
    </test>
</suite>

我想同时运行 Suite1.xml 和 Suite2.xml,这意味着每个套件的第一个测试用例应该同时在同一浏览器中运行,但使用不同的实例。

我尝试并行运行套件文件,但它对我不起作用。

Testng.xml3

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="RegressionSuite.xml" thread-count="10" verbose="2" parallel="test">

    <suite-files>
    
        <suite-file 
            path="Suite1.xml">
        </suite-file>
        
        <suite-file 
            path="Suite2.xml">
        </suite-file>
        
   </suite-files>
   
</suite> 
xml selenium-webdriver parallel-processing testng
1个回答
0
投票

在同一浏览器中使用 Selenium 但使用不同的实例同时运行多个 TestNG XML 文件涉及多线程方法。此设置允许您并行执行单独的测试,每个测试都在其自己的浏览器实例中。以下是实现这一目标的方法:

  1. 准备 TestNG XML 文件 首先,确保您已为测试配置了 TestNG XML 文件。假设您有两个 TestNG XML 文件:testng1.xml 和 testng2.xml。

  2. 配置 Selenium WebDriver 进行并行执行 确保您的测试类(TestClass1、TestClass2 等)已设置为实例化它们自己的 WebDriver 实例。这对于并行执行至关重要。

    公共类TestClass1 { 私有 WebDriver 驱动程序;

     @BeforeMethod
     public void setUp() {
         // Initialize the WebDriver instance
         System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
         driver = new ChromeDriver();
     }
    
     @Test
     public void testMethod1() {
         // Your test code here
     }
    
     @AfterMethod
     public void tearDown() {
         if (driver != null) {
             driver.quit();
         }
     }
    

    }

对 TestClass2 和您可能拥有的任何其他测试类重复类似的设置。

  1. 同时运行 TestNG XML 文件 要同时运行多个 TestNG XML 文件,您可以使用 Maven 或 Ant 等构建工具,或以编程方式运行它们。

使用 Maven 运行(如果使用 Maven) 如果您使用 Maven,您可以在 pom.xml 中配置 Surefire-plugin 来运行多个套件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.2</version>
    <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>testng1.xml</suiteXmlFile>
            <suiteXmlFile>testng2.xml</suiteXmlFile>
        </suiteXmlFiles>
    </configuration>
</plugin>

并运行:

mvn test

以编程方式运行 您还可以以编程方式运行 TestNG 套件:

public class TestRunner {
    public static void main(String[] args) {
        TestNG testng = new TestNG();
        List<String> suites = Lists.newArrayList();
        suites.add("path/to/testng1.xml"); // path to XML file.
        suites.add("path/to/testng2.xml");
        testng.setTestSuites(suites);
        testng.run();
    }
}

此设置在自己的线程中启动每个套件,遵循每个 XML 文件中的并行设置。套件中的每个测试都会创建自己的 WebDriver 实例,允许它们同时在单独的浏览器实例中运行。

注意: 确保您的系统有足够的资源来处理多个浏览器实例。 并行运行测试时,测试隔离至关重要;确保您的测试不会互相干扰。 WebDriver 设置 (System.setProperty) 路径和选项可能需要根据您的具体设置和浏览器选择进行调整。

© www.soinside.com 2019 - 2024. All rights reserved.