并行For Selenium C#-不是测试

时间:2018-10-11 13:35:14

标签: c# selenium google-chrome

我想创建一个并行的For循环,它将打开一些已更改的链接。 但是当我并行执行此操作时会遇到异常。

有帮助吗?

我在线搜索解决方案,仅找到使用Nunit的解决方案(运行少数选定的测试-不是我的情况)。

例如。

Parallel.For(0, 5, i => {
#region Driver Init
ChromeOptions options = new ChromeOptions();
options.AddArguments("--user-data-dir=C:\\Users\\Galdo\\AppData\\Local\\Google\\Chrome\\User Data");
options.AddArguments("--profile-directory=Profile 1");
ChromeDriver chromeDriver = new ChromeDriver(options);
#endregion       chromeDriver.Navigate().GoToUrl("https://www.youtube.com/id="+i);
            });

例外:

  

OpenQA.Selenium.WebDriverException HResult = 0x80131500消息=未知   错误:无法写入首选项文件(驱动程序信息:   chromedriver = 2.42.591088   (7b2b2dca23cca0862f674758c9a3933e685c27d5),平台= Windows NT   10.0.17134 x86_64)Source = WebDriver StackTrace:位于OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response   errorResponse)   OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String –

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法:

public void MyMethod()
{
    ChromeOptions options = new ChromeOptions();
    options.AddArguments("--user-data- 
    dir=C:\\Users\\Galdo\\AppData\\Local\\Google\\Chrome\\User Data");
    options.AddArguments("--profile-directory=Profile 1");
    ChromeDriver chromeDriver = new ChromeDriver(options);
}

然后您可以提出另一种方法,或者如果您使用Windows窗体应用程序,则可以使用按钮事件来使用任务。 在您的示例中,您可以使用如下所示的按钮事件:

private void btn_Click(object sender, EventArgs e)
{
   var task1 = Task.Factory.StartNew(() => MyMethod()); // you could add some arguments in your method
   var task2 = Task.Factory.StartNew(() => MyMethod()); // maybe with different args
   ...
   ... // as many tasks you want, in your case 5
}