之后停止驱动程序进程-未创建会话:此版本的ChromeDriver仅支持Chrome版本

时间:2019-11-01 19:52:57

标签: c# selenium selenium-chromedriver

当尝试初始化ChromeDriver以在C#中运行硒测试时,此不匹配错误会导致chromedriver可执行文件保持运行状态。

我已经修改了代码以捕获异常,然后调用Driver.Quit(),但这对执行过程没有影响。

如何防止驱动程序变成僵尸进程(从技术上讲不是僵尸进程)。

1 个答案:

答案 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;
    }

}

提起:https://github.com/SeleniumHQ/selenium/issues/7748