Selenium c# -在Firefox 48中加载配置文件会抛出异常

本文关键字:加载 配置文件 抛出异常 Firefox Selenium | 更新日期: 2023-09-27 18:04:11

我使用的是gecko/marionette driver,并尝试了selenium 2和selenium 3。

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

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 c# -在Firefox 48中加载配置文件会抛出异常

我在加载自定义配置文件时遇到了同样的问题corrupt deflate stream,下面是帮助我的方法:

我打开了我的自定义配置文件%AppData%'Mozilla'Firefox'Profiles'TestProfile的文件夹,并删除了所有空(0 kB大小)文件。(分别是"AlternateServices.txt"answers"parent"。在配置文件目录的根目录中锁定"

之后,下面的代码像魅力一样工作:

        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));

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

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