【问题标题】:Selenium Javascript Webdriver: how to setup Firefox profile to accept selfsigned certificateSelenium Javascript Webdriver:如何设置 Firefox 配置文件以接受自签名证书
【发布时间】:2017-01-11 13:55:14
【问题描述】:

我正在尝试使用selenium-webdriver 来测试使用自签名证书的站点。

要通过 Firefox 下的测试,需要使用配置文件告诉 Firefox 接受自签名证书。

我能够使用使用firefox -ProfileManager 创建的配置文件。但是,我无法使用以编程方式创建的配置文件。

谁能告诉我这里缺少什么?

这是使用firefox -ProfileManager 创建的配置文件的javascript 程序:

var webdriver = require('selenium-webdriver');
var firefox   = require('selenium-webdriver/firefox');

var profile   = new firefox.Profile('/path/to/firefox/profile');
var browser   = new firefox.Driver(new firefox.Options().setProfile(profile));

browser.get('https://self-signed.badssl.com/');
browser.quit();

这里是javascript 程序,它使用由代码创建的配置文件:

var webdriver = require('selenium-webdriver');
var firefox   = require('selenium-webdriver/firefox');

var profile   = new firefox.Profile();
profile.setAcceptUntrustedCerts(true);
profile.setAssumeUntrustedCertIssuer(false); // `true` didn't work too
var browser   = new firefox.Driver(new firefox.Options().setProfile(profile));

browser.get('https://self-signed.badssl.com/');
browser.quit();

我在第二个程序中遇到的错误如下:

$ node test-firefox-profile.js
/user/ws/node_modules/selenium-webdriver/lib/promise.js:654
    throw error;
    ^

WebDriverError: Error loading page
    at WebDriverError (/user/ws/node_modules/selenium-webdriver/lib/error.js:27:10)
    at Object.throwDecodedError (/user/ws/node_modules/selenium-webdriver/lib/error.js:477:11)
    at parseHttpResponse (/user/ws/node_modules/selenium-webdriver/lib/http.js:386:15)
    at /user/ws/node_modules/selenium-webdriver/lib/http.js:328:11
    at process._tickCallback (node.js:369:9)
From: Task: WebDriver.navigate().to(https://self-signed.badssl.com/)
    at Driver.schedule (/user/ws/node_modules/selenium-webdriver/lib/webdriver.js:414:17)
    at Navigation.to (/user/ws/node_modules/selenium-webdriver/lib/webdriver.js:1042:25)
    at Driver.get (/user/ws/node_modules/selenium-webdriver/lib/webdriver.js:832:28)
    at Object.<anonymous> (/user/ws/test-firefox-profile.js:9:9)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)

【问题讨论】:

  • 嗨@Younes,你找到解决方案了吗?我遇到了同样的问题。
  • 不,我没有。如问题所示,我可以使用使用 ProfileManager 创建的配置文件获得相同的结果。由于我无法解决此问题,我将退回到预定义的配置文件。
  • 嗨@Younes,用我的ff和phantomjs解决方案检查这个链接。也许会有所帮助。 stackoverflow.com/questions/39638830/…

标签: selenium-webdriver firefox-profile


【解决方案1】:

这对我有用。 driver = new webdriver.Builder().withCapabilities({'browserName': 'firefox', acceptSslCerts: true, acceptInsecureCerts: true});

【讨论】:

    【解决方案2】:

    answering另一个问题时,我偶然发现了这个问题。最终我找到了答案。

    对我有用的是使用Builder 而不是尝试使用firefox.Driver

    var webdriver = require('selenium-webdriver'),
        firefox = require('selenium-webdriver/firefox'),
        driver = null,
        profile = new firefox.Profile();
    profile.setAcceptUntrustedCerts(true);
    profile.setAssumeUntrustedCertIssuer(false);
    
    var opts = new firefox.Options();
    opts.setProfile(profile);
    var builder = new webdriver.Builder().forBrowser('firefox');
    builder.setFirefoxOptions(opts);
    driver = builder.build();
    
    driver.get('https://www.google.com');
    driver.quit();
    

    当然,firefox.Profile 的所有方法都可以在将其设置到firefox.Options 并将其传递给构建器之前使用。

    请注意,构建器仍将返回 firefox.Driver 的实例。

    【讨论】:

    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 2016-10-18
    • 2019-12-03
    • 1970-01-01
    • 2016-11-08
    • 2020-07-21
    相关资源
    最近更新 更多