我正在尝试使用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)
发布于 2017-11-18 06:32:31
这对我很有效。driver = new webdriver.Builder().withCapabilities({'browserName': 'firefox', acceptSslCerts: true, acceptInsecureCerts: true});
发布于 2017-05-01 03:36:43
当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.Options
中设置firefox.Profile
并将其传递给构建器之前,可以使用它的所有方法。
请注意,构建器仍将返回firefox.Driver
的实例。
https://stackoverflow.com/questions/39309511
复制相似问题