2016-11-22 53 views
0

我正在使用Selenium和Java WebDriver以及測試Runner Suit(XML),我有2個測試可以運行。如何在同一WebDriver上使用XML Runner運行2測試?

我已經把設置方法每個測試類,它是確定的 - 測試運作良好(與它的瀏覽器窗口,每個測試)。

然後我決定將安裝方法移到配置類中。這個類由每個測試類擴展,這就產生了一個問題,即第二個測試運行使用相同的瀏覽器覆蓋第一個測試。

設置類方法的代碼:

public class Configrations_And_ScreenShotsFunc_POM { 

protected WebDriver driver; 

    public void setup() 
    { 
     System.setProperty("webdriver.edge.driver","C:\\Program Files (x86)\\Microsoft Web Driver\\MicrosoftWebDriver.exe");  
     driver = new EdgeDriver(); 
     driver.get(URL); 
    } 

試驗1類代碼:

public class TestCase1_POM extends Configrations_And_ScreenShotsFunc_POM { 

@BeforeTest 
public void Begain() throws InterruptedException 
{ 
    setup(); //Setup Browser  
} 

試驗2類編碼:

public class TestCase2_POM extends Configrations_And_ScreenShotsFunc_POM { 

@BeforeTest 
public void Begain() throws InterruptedException 
{ 
    setup(); //Setup Browser   
} 

Runner.Xml:

<?xml version="1.0" encoding="UTF-8"?> 
<suite name="TestSuite" thread-count="2" parallel="tests"> 
    <test name="TestCase1"> 
     <parameter name="browser" value="Edge" /> 
     <classes> 
      <class name="POM.Tests.TestCa se1_POM"></class> 
     </classes> 
    </test> 
    <test name="TestCase2_POM"> 
     <parameter name="browser" value="Edge" /> 
     <classes> 
      <class name="POM.Tests.TestCase2_POM"></class> 
     </classes> 
    </test> 
</suite> 

評論:2個測試文件位於一個文件夾中,配置類位於另一個文件夾中。

如何解決?

+0

空穴轉輪: <?XML版本= 「1.0」 編碼= 「UTF-8」> <!DOCTYPE套件SYSTEM「http://testng.org/ TestNG的-1.0.dtd 「> <套件名稱=」 TestSuite的」針數= 「2」 平行= 「測試」> <測試名稱= 「TestCase1」> <參數名稱= 「瀏覽器」 的值= 「Edge」/> <類名= 「POM.Tests.TestCa se1_POM」> <測試名稱= 「TestCase2_POM」> <參數名稱= 「瀏覽器」 的值= 「邊緣」 /> <類名= 「POM.Tests.TestCase2_POM」>

回答

0

在您的setup()方法上使用@BeforeTest註釋而不是您當前的Begin()並刪除您的Begin()

+0

我這樣做,它停下來重寫,但仍然沒有在一起工作2個測試。 –

0

註釋@BeforeTest只能在suite.xml文件中每<test>標記調用一次。訴諸瀏覽器實例化在一個@BeforeTest方法,該方法是可用的,在鹼類,所有試驗的類擴展具有以下缺點:

  • 根據如何WebDriver實例被保存(無論是作爲一個靜態數據成員或作爲一個實例變量),測試方法可以最終使用相同的webdriver實例(在靜態數據成員的情況下)(或)最終得到NullPointerException(在實例數據成員的情況下)

可以考慮將瀏覽器實例化移動到更精細的級別,例如:

  • @BeforeClass(這裏還缺點是有,如果有你的班上不止一個@Test註解測試方法,它們都使用了WebDriver例如,通過您的@BeforeClass初始化,然後並行執行過程中,你最終將不得不競爭條件之中你的測試方法)或者注入方法的
  • @BeforeMethod註解的方法。

我創造了一個博客文章,告訴您如何做TestNG的並行執行,而無需使用任何這些配置註解,繼承等,請參閱如果它可以幫助你。

博客鏈接:https://rationaleemotions.wordpress.com/2013/07/31/parallel-webdriver-executions-using-testng/

相關問題