Selenium Server 2.33.0, Selenium Webdriver JS 바인딩 2.34.0 (npm 패키지 "selenium-webdriver") 및 Mac 10.6.8의 PhantomJS 1.9.1을 사용하여 인증하는 데 문제가 있습니다. 나는 또한 다른 JS 바인딩 "webdriverjs"및 "wd"비슷한 결과를 시도 했으므로이 바인딩이 문제가 있다고 생각하지 않습니다.Selenium Webdriver와 PhantomJS를 사용하여 기본 인증을 수행하는 방법은 무엇입니까?
I 설치 Webdriver이 사용 :
return new Webdriver.Builder().
usingServer('http://localhost:4444/wd/hub').
withCapabilities({
"browserName": "phantomjs",
"phantomjs.page.settings.userName":user,
"phantomjs.page.settings.password":password
}).build();
그때 셀레늄 서버 로그에서이 출력을 참조하십시오
PhantomJS is launching GhostDriver...
[INFO - 2013-08-13T21:52:40.240Z] GhostDriver - Main - running on port 28904
[INFO - 2013-08-13T21:52:40.394Z] Session [acd0ad70-0462-11e3-95df-4b230b17334d] - CONSTRUCTOR - Desired Capabilities:{"phantomjs.page.settings.password":"xxx","browserName":"phantomjs","phantomjs.page.settings.userName":"xxx"}
[INFO - 2013-08-13T21:52:40.394Z] Session [acd0ad70-0462-11e3-95df-4b230b17334d] - CONSTRUCTOR - Negotiated Capabilities: {"browserName":"phantomjs","version":"1.9.1","driverName":"ghostdriver","driverVersion":"1.0.3","platform":"mac-10.6 (Snow Leopard)-32bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"},"phantomjs.page.settings.password":"xxx","phantomjs.page.settings.userName":"xxx"}
내가 협상 능력이 내가 지정한 사용자와 암호를 포함하는 것을 알 수 있습니다 .
14:43:25.504 INFO - Executing: [find element: By.id: auth-username-field-inputEl] at URL: /session/04627dc2-a16c-42b3-b3dc-48e502f7cfec/element)
14:43:29.410 WARN - Exception thrown org.openqa.selenium.NoSuchElementException: Error Message => 'Unable to find element with id 'auth-username-field-inputEl''
를 내가 인증이없는 로컬 호스트 웹 사이트에 내 스크립트를 실행하면 잘 작동 : 내가 HTTP 기본 인증을 사용하는 웹 사이트의 페이지를 열려고 할 때 인증이 실패합니다. Firefox (Selenium을 통하지 않고)를 사용하여 원격 웹 사이트를 볼 경우 홈페이지를 인증하고 볼 수 있습니다.
"-w"를 사용하여 Webdriver 모드에서 PhantomJS를 실행 해봤는데 비슷한 결과가 나타납니다.
var page=require('webpage').create();
//page.customHeaders={'Authorization': 'Basic '+btoa('xxx:xxx')};
page.settings.userName="xxx";
page.settings.password="xxx";
var callback=function(status){
if(timer)window.clearTimeout(timer);
if (status=='success' || status=='timedout') {
console.log(status);
console.log(page.plainText);
}else{
console.log('Failed to load.');
}
phantom.exit();
};
var timer=window.setTimeout(callback,60000,'timedout');
var url="http://xxx.com";
page.open(url,callback);
내가이 posting에서이 스크립트를 복사 : 나는 phantomjs이 스크립트를 실행하는 경우
그것은 작동합니다. 1.9.1에서 userName과 password가 잘 작동한다는 것을 알았습니다. customHeader를 설정할 필요가 없었습니다. 내 셀렌 스크립트에서 customHeader 시도했지만 차이를 만들지 않았다. 이것은 GhostDriver에서 문제가 될 수 있습니다.
누구든지이 기능을 사용할 수 있습니까?
페이지가 제대로로드되지 않는 것 같습니다. 스크린 샷을 찍으려고 시도했거나 html 소스를 포착하여 어떤 페이지를 실행하려고했는지 확인해 봤니? –
예, 스크린 샷이 비어 있고 소스가 빈 html 페이지입니다. – ybendana