2013-10-09 34 views
0

我不認爲這是Selenium特有的,但我已經包含了該標籤,因爲我認爲這是一個與Selenium測試非常相關的問題。如何在Selenium中的每個線程運行一個瀏覽器?

我有一個的工作一個瀏覽器類,因爲它代表:

public static class Browser { 
    private static IWebDriver webDriver; 
    private static IWebDriver ieDriver; 
    private static IWebDriver chromeDriver; 

    private static BrowserType _browserType; 

    public static BrowserType BrowserType { 
     set { 
      _browserType = value; 

      switch (_browserType) { 
       case BrowserType.IE: 
        if (ieDriver == null) 
        { 
         var ieOptions = new InternetExplorerOptions(); 
         ieOptions.InitialBrowserUrl = "about:home"; 
         ieDriver = new InternetExplorerDriver(DriverPath, ieOptions); 
        } 
        webDriver = ieDriver; 
        break; 
       case BrowserType.Chrome: 
        if (chromeDriver == null) 
        { 
         chromeDriver = new ChromeDriver(DriverPath); 
        } 
        webDriver = chromeDriver; 
        break; 
       default: 
        if (chromeDriver == null) 
        { 
         chromeDriver = new ChromeDriver(DriverPath); 
        } 
        webDriver = chromeDriver; 
        break; 
        break; 
      } 

     } get { return _browserType; } 

    } 

    public static void Goto(string url) { 
     webDriver.Navigate().GoToUrl(url); 
    } 
} 

的問題是,這些瀏覽器的在自己的線程運行,使每個測試可以在每個瀏覽器同時運行(將跨瀏覽器測試時間縮短到運行單個瀏覽器測試所需的時間)。現在測試稱爲依次與下面的方法:

public void RunTest(Func<TestSettings, TestRole, bool> testToRun) 
     { 
    foreach (var browserType in BrowserTypes) 
      { 
        // Assert test passes in given browser 
        // browser should have its own thread 
      } 
     } 

如何在多線程這種情況下可以實現嗎?

+0

這是什麼語言? java或c# – sircapsalot

+0

@sircapsalot - C# – RobVious

回答

0

多線程通常可以通過一個testunit來運行多個測試。

對於PHP你有PHPUnit的和其他一些選項: http://net.tutsplus.com/tutorials/php/parallel-testing-for-phpunit-with-paratest/

對於Java,你可以嘗試使用JUnit的Maven的萬無一失,插件挖。 http://maven.apache.org/surefire/maven-surefire-plugin/examples/junit.html

不知道它是否可以通過任何硒API實現。 如果您找到方法,請務必讓我知道!

希望這會有所幫助。

0

我看到你只有一個司機:

private static IWebDriver webDriver; 

當您設置BrowserType首次(例如如IE)分配的webdriver(如IE)。 然後,當您第二次設置BrowserType(例如Chrome)時,您重新分配webDriver(現在是Chrome,IE丟失)。這種方式永遠不會同時運行這兩種瀏覽器。

BrowserType應該設置在外部。例如,作爲您的測試項目的參數或從App.config。如果您想同時在一臺機器上運行測試,請創建一個應用程序(例如控制檯應用程序),該應用程序在兩個不同的線程中啓動具有不同BrowserType值的測試項目。

相關問題