2015-01-09 51 views
0

我設法運行我的測試並行與不同的瀏覽器,現在看起來很好 我在@BeforeTest部分創建我的驅動程序,並在@AfterTest中殺死它,線程正常(一每個瀏覽器),開始和停止罰款 我有很多功能在不同的類使用我的驅動程序,所以,我不知道是否有某種方式來「分享」到整個項目 我知道我可以通過驅動程序作爲參數到其他類,但會更容易以其他方式:-)webdriver線程可用於整個項目

任何建議?

Public class Test1 { 

      protected static WebDriver driver; 

      @BeforeTest 
      @Parameters({ "browser", "HUBip" }) 
      public void launchBrowser(@Optional("FF") String browser, @Optional("localhost") String HUBip) throws MalformedURLException { 

       try { 
        if (browser.equalsIgnoreCase("Chrome")) { 
          DesiredCapabilities caps=DesiredCapabilities.chrome(); 
          driver=new ScreenShotRemoteWebDriver(url, caps); 

         } else if (browser.equalsIgnoreCase("FF")) { 
          DesiredCapabilities caps=DesiredCapabilities.firefox(); 
          driver=new ScreenShotRemoteWebDriver(url, caps); 
         } else { 
          DesiredCapabilities caps=DesiredCapabilities.internetExplorer(); 
          driver=new ScreenShotRemoteWebDriver(url, caps);  
         } 
       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
     } 

      @Parameters("browser") 
      @Test(testName="Quick SMS SmokeTest",description="Smoke test 'Quick SMS'section", groups="SmokeTest") 
      public void quickSMS_SmokeTest(@Optional("IE") String browser) throws Exception {    
       try { 
        LogIn(driver,ObjectsPaths.ADMIN_USER,ObjectsPaths.ADMIN_PASSWORD); 

       } catch (Exception e) { 
        Reporter.log("from exception" + e.toString());   
       } 
      } 

      @AfterTest 
      public void closeBrowser() throws Exception { 
       driver.quit(); 
      } 



     <suite name="Automated Tests" verbose="2" preserve-order="false" parallel="tests" alwaysRun="true" thread-count="2"> 
     <test name="Test1FF" preserve-order="true"> 
        <parameter name="browser" value="ff" ></parameter> 
         <classes> 

         <class name="com.AutoTest.test.Test1" /> 

         </classes>   
     </test> 


     <test name="Test1IE" preserve-order="true"> 


        <parameter name="browser" value="ie" ></parameter> 
         <classes> 
         <class name="com.AutoTest.test.Test1" />    
         </classes> 

     </test> 
     </suite> 

回答

0

我已經實現維持整個套件一個webdriver的方式是象下面這樣:

public class TestCaseOne extends TestSuiteOneBase{ 
//This contains the methods and classes for the test cases 
@BeforeTest 
@Test 
@Test 
@AfterTest 
} 

public class TestSuiteOne extends TestSuiteManager{ 
//some common methods to be used across the suite 
} 

public class TestSuiteManager{ 
//preCondition methods 
//Driver is declared here so it's visible across all other objects. 
} 

希望這有助於。

+0

我試過但沒有運氣!當我做出這樣的事情時,我看到的是,這兩個瀏覽器都啓動,但只有一個運行測試用例,另一個似乎被凍結:-( – user1944151

+0

需要查看您的代碼,因爲我目前正在使用上述實現。驅動程序必須被聲明爲一個公共變量,在父級(suitemanager)類中的一個函數內初始化,它將可用於其他類。 – user1424385

+0

我同意這種方式可用於其他類,但如果我有一個並行執行,驅動程序也會在多個實例中創建?這是我不確定要理解的部分:-) – user1944151