2017-08-16 95 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文件。