如何在selenium中为每个单个testng XML文件启动浏览器

时间:2017-08-16 07:34:31

标签: xml selenium selenium-webdriver testng

我有两个testng XML文件     例如:testng1.xml& testng2.xml

我需要在不同浏览器或同一浏览器中并行执行这两个XML文件。请建议我如何实现这种情况。

2 个答案:

答案 0 :(得分:2)

这取决于您在testing.xml文件中配置课程的方式。 您甚至可以使用单个testing.xml文件在同一浏览器或不同浏览器上并行运行测试。

对于配置,您可以使用以下示例文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Parallel Test" parallel="classes">
   <test name="Functional_Test_1">
     <parameter name="browser" value="PhantomJS" />
    <classes>    
          <class name="com.simpletest.DriverSerup"/>
   </classes> 
  </test> 
     <test name="Functional_Test_2">
       <parameter name="browser" value="chrome" />
     <classes>      
        <class name="com.simpletest.DriverSerup"/>
     </classes> 
  </test>    
</suite>

这就是设置浏览器执行测试的方法:

package com.simpletest;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class DriverSerup {

    @BeforeTest
    @Parameters("browser")
    public void setUp(String browser)
    {

        switch(browser)
        {
        case "chrome":

            // Write the code here for open chrome browser
            System.out.println("For Browser : " + browser);
            break;
        case "PhantomJS":
            // Write the code here for open PhantomJS browser
            System.out.println("For Browser : " + browser);
            break;
        default :
            System.out.println("Broweer choice not available");     

        }
    }

}

在您创建的两个<test>代码中提及您自动化的所有课程。

或者,如果你有2 testing.xml,那么配置如下:

<强> testing1.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Parallel suite 1" >
   <test name="Functional_Test_1">
     <parameter name="browser" value="PhantomJS" />
    <classes>    
          <class name="com.simpletest.DriverSerup"/>
   </classes> 
  </test> 
</suite>

<强> testing2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel suite 2">
     <test name="Functional_Test_2">
       <parameter name="browser" value="chrome" />
     <classes>      
        <class name="com.simpletest.DriverSerup"/>
     </classes> 
  </test>    
</suite>

在这里你必须创建套件套件,即 combineuite.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="suite of suites"  parallel="classes" thread-count="2" >
    <suite-files>
        <suite-file path="testing1.xml" />
        <suite-file path="testing2.xml" />
    </suite-files>
</suite>

注意:请勿忘记在parallel标记中提及并行性的suite属性。

答案 1 :(得分:0)

对于我的场景,只有在testng1.xml文件中执行所有测试后才会触发testng2.xml文件。

请参阅以下示例。

<强> Testng1.xml

FROM microsoft/dotnet:1.1-sdk-projectjson

<强> Testng2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Parallel suite 1" >
  <test name="Functional_Test_1">
   <parameter name="browser" value="Chrome" />
    <classes>    
      <class name="com.simpletest.sample1"/>
    </classes> 
  </test> 

   <test name="Functional_Test_2">
    <classes>    
       <class name="com.simpletest.sample2"/>
     </classes> 
  </test> 
</suite>

然后我创建了 combineuite.xml 文件,我在其中配置了两个testng.xml文件并触发了它。

在这种情况下,只有在 testng1.xml 文件完成后才会触发 testng2.xml 文件。

因此,可以帮助我在任何浏览器中并行运行这两个xml文件。