【问题标题】:C# - Google Chrome crashes when running selenium tests on docker windowsC# - 在 docker windows 上运行 selenium 测试时谷歌浏览器崩溃
【发布时间】:2022-01-22 17:45:01
【问题描述】:

在 docker windows 上运行 selenium c# 测试时出现以下错误。谁能帮我解决这个问题。我真的很难解决它。

我得到的错误如下所示:

OpenQA.Selenium.WebDriverException:未知错误:Chrome 无法启动:崩溃。
(无法访问铬)
(从 chrome 位置 C:\Program Files\Google\Chrome\Application\chrome.exe 开始的进程不再运行,因此 ChromeDriver 假设 Chrome 已崩溃。)
TearDown : System.NullReferenceException : 对象引用未设置为对象的实例。

在 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 参数)
在 OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
在 OpenQA.Selenium.Remote.RemoteWebDriver...ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
在 OpenQA.Selenium.Chrome.ChromeDriver...ctor(ChromeDriverService 服务,ChromeOptions 选项,TimeSpan 命令超时) 在 C:\src\SeleniumCore\Core\Chrome.cs: 58 行中的 SeleniumCore.Core.Chrome.Initialize() 处

初始化chrome的代码如下:

public class Chrome : IBrowser
{
    public RemoteWebDriver MainDriver { get; private set; }

    private readonly bool Headless;

    public Chrome(AppConfigContext context)
    {
        Headless = context.Headless;
    }

    /// <summary>
    /// Initialize Chrome Browser Instance.
    /// </summary>
    public void Initialize()
    {
        ChromeOptions options = new ChromeOptions();

        if (Headless)            
            options.AddArgument("headless");
            options.AddArgument("--disable-gpu");
            options.AddArgument("--no-sandbox");
            options.AddArguments("--disable-dev-shm-usage");

        var downloadPath = Controls.DataFilePath + @"Downloads";

        Controls.CreateDirectory(downloadPath);

        options.AddUserProfilePreference("download.default_directory", downloadPath);
        options.AddUserProfilePreference("download.prompt_for_download", false);
        options.AddUserProfilePreference("disable-popup-blocking", "true");



        RemoteWebDriver driver = new ChromeDriver(@"C:\Chromedrivers\new",options);
        MainDriver = driver;

我正在使用的码头信息:

客户:

上下文:默认

调试模式:假

插件:

buildx:Docker Buildx(Docker Inc.,v0.7.1)

compose:Docker Compose(Docker Inc.,v2.2.1)

扫描:Docker 扫描(Docker Inc.,v0.14.0)

服务器:

容器:5

正在运行:0

暂停:0

停止:5

图片:50

服务器版本:20.10.11

存储驱动:windowsfilter

窗户:

日志驱动程序:json-file

插件:

音量:本地

内核版本:10.0 19042 (19041.1.amd64fre.vb_release.191206-1406)

操作系统:Windows 10 专业版 2009(操作系统内部版本 19042.1466)

操作系统类型:windows

架构:x86_64

CPU:4

总内存:7.886GiB

姓名:

标签:

实验:错误

不安全的注册表:

127.0.0.0/8

启用实时恢复:false

产品许可:社区引擎

请对此进行回复。谢谢

【问题讨论】:

    标签: c# docker selenium selenium-chromedriver remotewebdriver


    【解决方案1】:

    如果您的用例是连接到 RemoteWebDriver,而不是:

    RemoteWebDriver driver = new ChromeDriver(@"C:\Chromedrivers\new",options);
    

    你必须:

    var MainDriver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), DesiredCapabilities.Chrome()); // replace this url with the url of your remote hub
    

    【讨论】:

    • 谢谢!!我会尝试这样的。
    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 2020-03-06
    • 2018-08-20
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2014-10-27
    • 2016-10-11
    相关资源
    最近更新 更多