我想创建一个并行的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 –
答案 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
}