首页 > 解决方案 > 并行 For 循环 Selenium C# - 不是测试

问题描述

我想做一个并行的 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 Stackrace at:OpenQAlen.T Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String –</p>

标签: c#seleniumgoogle-chrome

解决方案


你可以做一个这样的方法:

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
}

推荐阅读