我不認爲這是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
}
}
如何在多線程這種情況下可以實現嗎?
這是什麼語言? java或c# – sircapsalot
@sircapsalot - C# – RobVious