c# - 并行 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>
解决方案
你可以做一个这样的方法:
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
}
推荐阅读
- scheme - 牛顿法的平方根
- r - is.vector() 和 is.numeric() 函数有什么区别?
- r - R 中的条形图 - 我可以在 Python 和 Tableau 中执行此操作,但在 R 中遇到问题
- c# - 如何在 c# 中通过电子邮件发送 uri 文件中的图像
- docusignapi - DocuSign API 响应慢的问题,
- c++ - Memcpy C++ 替代方案
- entity-framework - Create one to many and many to one mapping between two tables in entity framework 6 code first approach
- aws-glue - 如何将输入传递给步骤函数映射状态中的任务参数?
- android - 在什么情况下 BitmapFactory.Options.inPreferredConfig 不起作用?
- html - Python 脚本 - 网页抓取