当尝试初始化ChromeDriver以在C#中运行硒测试时,此不匹配错误会导致chromedriver可执行文件保持运行状态。
我已经修改了代码以捕获异常,然后调用Driver.Quit()
,但这对执行过程没有影响。
如何防止驱动程序变成僵尸进程(从技术上讲不是僵尸进程)。
答案 0 :(得分:0)
我通过以下方法解决了这个问题:
using NeoSmart.AsyncLock;
// ...
private static AsyncLock driverlock = new AsyncLock();
using (driverlock.Lock())
{
// https://stackoverflow.com/questions/58665122/stop-driver-process-after-session-not-created-this-version-of-chromedriver-on
var process = Process.GetProcessesByName("chromedriver");
try
{
Browser = new ChromeDriver(chromeOptions);
}
catch(InvalidOperationException e)
{
var newProcess = Process.GetProcessesByName("chromedriver");
newProcess.Select(x => x.Id)
.Except(process.Select(x => x.Id))
.ToList().ForEach(x => Process.GetProcessById(x).Kill());
throw;
}
}