2016-09-03 2 views
2

selenium-webdriver을 사용하여 자체 서명 된 인증서를 사용하는 사이트를 테스트하려고합니다.Selenium Javascript Webdriver : 자체 서명 된 인증서를 사용하도록 Firefox 프로필을 설정하는 방법

Firefox에서 테스트를 통과하려면 Firefox에 자체 서명 된 인증서를 수락하도록 알려주는 프로필을 사용해야합니다.

firefox -ProfileManager을 사용하여 만든 프로필을 사용할 수있었습니다. 그러나 프로그래밍 방식으로 생성 된 프로필을 사용할 수는 없습니다.

아무에게도 내가 누락 된 부분을 말할 수 있습니까?

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

난 오류를 : 코드에 의해 생성 된 프로파일을 사용하는 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(); 

그리고 여기에 있습니다 : 여기

firefox -ProfileManager에 의해 생성 된 프로파일을 사용하는 javascript 프로그램입니다 두번째 프로그램으로가는 것은 다음과 같습니다 :

$ 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) 
+0

안녕 @Younes, 당신은 어떤 해결책을 찾기습니까? 나는 같은 문제에 붙어있다. – 6axter82

+0

아니요. 질문에서 알 수 있듯이 ProfileManager로 만든 프로필을 사용하여 동일한 결과를 얻을 수 있습니다. 이 문제를 해결할 수 없어서 미리 정의 된 프로필로 돌아가고 있습니다. – Younes

+0

안녕 @Younes은 FF와 phantomjs 내 솔루션이 링크를 확인하십시오. 아마도 도움이 될 것입니다. http://stackoverflow.com/questions/39638830/selenium-webdriver-phantom-and-firefox-ssl-issue – 6axter82

답변

1

answering 다른 질문을했을 때, 나는이 질문에 비틀 거렸다. 결국 저는 그 해답을 알아 냈습니다. 물론

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에서 설정 및 빌더에 사람들을 전달하기 전에 사용할 수 있습니다 나를 Builder를 사용하는 대신이 firefox.Driver 사용하려고 한 근무 무엇

. 빌더는 여전히 firefox.Driver의 인스턴스를 반환합니다

참고.

1

이것은 나를 위해 일했습니다. driver = new webdriver.Builder().withCapabilities({'browserName': 'firefox', acceptSslCerts: true, acceptInsecureCerts: true});

관련 문제