【问题标题】:Selenium C# - Loading a profile throws exception in Firefox 48Selenium C# - 在 Firefox 48 中加载配置文件会引发异常
【发布时间】:2017-04-10 18:22:59
【问题描述】:

我正在使用 gecko/marionette 驱动程序,并且已经尝试过 selenium 2 和 selenium 3。

我已经成功地使用 web 驱动程序启动了一个 Firefox 会话,并且没有使用选项和服务来指定二进制文件的配置文件:

FirefoxOptions options = new FirefoxOptions();
options.BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla\Firefox\firefox.exe";
driver = new FirefoxDriver(options);

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();
service.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
driver = new FirefoxDriver(service);

但是,当我尝试通过添加选项将配置文件加载到其中时:

 options.Profile = profile;

它给出了一个corrupt deflate stream 异常。

当我手动指定二进制文件然后尝试加载配置文件时也会发生这种情况(在版本 3 中已弃用)

在新的 Firefox 更新之前,相同的配置文件抓取和加载工作正常。有什么特别的事情需要做才能让它工作吗?

【问题讨论】:

  • 在哪里可以解决或找到解决方法?我面临着完全相同的问题。我正在使用 Selenium 3(测试版)和 Firefox 48.0.2
  • @KarthikBalasubramanian 我无法解决这个问题,不。

标签: c# selenium firefox


【解决方案1】:

我在加载自定义配置文件时遇到了同样的问题corrupt deflate stream,这对我有帮助:

我打开了我的自定义配置文件%AppData%\Mozilla\Firefox\Profiles\TestProfile 的文件夹并删除了所有空(0 kB 大小)文件。 (它们是配置文件目录根目录中的“AlternateServices.txt”和“parent.lock”)

之后,下面的代码就像一个魅力:

        var FirefoxProfileManager = new FirefoxProfileManager();
        var profile = FirefoxProfileManager.GetProfile("TestProfile");
        //driver = new FirefoxDriver(profile);
        var firefoxService = FirefoxDriverService.CreateDefaultService();
        var options = new FirefoxOptions();
        options.Profile = profile;
        driver = new FirefoxDriver(firefoxService, options, new TimeSpan(0, 0, 30));

【讨论】:

  • 拯救了我的一天!谢谢!
  • 为我工作。具体来说,我删除了大小为零的“AlternateServices.txt”和“parent.lock”。它们位于我的目标个人资料文件夹的根目录中
【解决方案2】:

以下内容在使用默认配置文件时适用于我,我使用它来解决一个问题,即它不使用我们需要通过我们的安全系统的根证书:

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\\TestData\Dependencies", "geckodriver.exe");
        service.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
        FirefoxProfileManager profileM = new FirefoxProfileManager();
        FirefoxProfile profile = profileM.GetProfile("default");


        //service.Port = 64444;
        FirefoxOptions options = new FirefoxOptions();
        options.Profile = profile;

        Instance = new FirefoxDriver(service,options, TimeSpan.FromMinutes(1));
        TurnOnWait();

HTH

【讨论】:

  • 这仍然会导致我使用 Selenium 3.0 和 Geckodriver 0.14 时出现corrupt deflate stream 错误
猜你喜欢
  • 1970-01-01
  • 2016-03-23
  • 2017-12-02
  • 1970-01-01
  • 2014-06-24
  • 2019-10-28
  • 2018-10-23
  • 2016-06-25
相关资源
最近更新 更多