2017-08-16 96 views
0

每个单TestNG的XML文件,我有两个TestNG的XML文件 如:testng1.xml & testng2.xml如何启动浏览器在硒

我需要在不同的浏览器或浏览器一样执行平行这两个XML文件。请告诉我如何实现这种情况。

+1

您可以添加有问题的文件 – NarendraR

+0

请参阅:[我如何做X?](https://meta.stackoverflow.com/questions/253069/whats-the-appropriate-new-current-close-reason-对于SO-do-i-do-x)对SO的期望是,用户提出问题不仅要研究回答他们自己的问题,还要分享研究,代码尝试和结果。这表明你已经花时间去尝试帮助自己,它使我们避免重申明显的答案,最重要的是它可以帮助你得到更具体和相关的答案!另请参阅:[ask] – JeffC

回答

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标记的并行性。

+0

我有单独的属性文件,我可以在其中提到要启动哪个浏览器,要登录哪个用户,要导航哪个URL。 –

+0

根据属性文件配置,已执行一组操作。 –

+0

在属性文件中我提到了Browser = Chrome,所以我需要在两个浏览器中同时运行两个testng.xml文件。 –

0

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

请看下面的例子。

Testng1.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> 

Testng2.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_3"> 
    <parameter name="browser" value="Chrome" /> 
    <classes>  
     <class name="com.simpletest.demo1"/> 
    </classes> 
    </test> 

    <test name="Functional_Test_4"> 
    <classes>  
     <class name="com.simpletest.demo2"/> 
    </classes> 
    </test> 
</suite> 

然后创建combinesuite.xml文件在那里我有两个配置文件的testng.xml并引发它。

在这种情况下,testng2.xml文件被触发testng1.xml文件被完成之后。

所以,可以帮助我如何在任何浏览器中并行运行这两个XML文件。