2015-01-09 3 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

Смежные вопросы