2013-02-25 4 views
2

iOS 브라우저에서 Selenium WebDriverJS를 사용하려고합니다. 불행히도이 작업이 내가 필요로하는대로 작동하지 않습니다.Selenium WebDriverJs가 iOS를 사용하여 새 클라이언트를 만들 수 없습니다.

iPhoneDriver wiki page에 설명 된 것과 같이 "iWebDriver"- 프로젝트를 설정했습니다. 파이썬 스크립트를 복사했는데 성공했습니다. 작은 nodeJS 프로젝트조차도 작동했지만, 브라우저에서 실행하려고했을 때 Firefox에서 다음과 같은 오류 메시지가 나타납니다.

Error: Unable to create a new client for this browser. The WebDriver session ID has not been defined.

강령

나는 실행하려고 해요 : discribed 같은

var driver = new webdriver.Builder(). 
    usingServer('http://localhost:3001/wd/hub'). 
    withCapabilities({'browserName': 'iPhone'}). 
    build(); 

driver.get('http://www.google.com'); 
driver.quit(); 

내가 컴파일 한 webdriverjs을 the WebDriverJs wiki page에서. 그리고 예, webdriver.js가로드되었습니다.)

+0

혹시 이것을 알아 냈습니까? 나는 똑같은 오류를 겪고있다. – byoungb

+1

유감스럽게도 webdriverJS (브라우저에서는 node.js가 아닌)가 새로운 세션을 단독으로 만들 수없는 것 같습니다. 따라서 수동으로 세션을 만들고 실행시 webdriverJS에 session-id를 전달해야합니다. 내 요구에 맞게 webdriverJS를 편집했습니다. 기존 세션에 액세스하는 방법을 보려면 [이 목록의 주석] (http://code.google.com/p/selenium/wiki/WebDriverJs#Controlling_the_Host_Browser)을 확인하십시오. 기본적으로 GET-Parameters "wdurl"(host-url)과 "wdsid"(session-id)를 사용합니다. 희망이 도움이 :) – Senad

+0

쥐,이 일을 크게 복잡하게, 나는 FF 여우를 확장하고 복잡한 이유에 대해 IE 브라우저를 제어해야합니다. 셀레늄이 자바 스크립트로 제어 될 수있을 때 나는 너무 흥분했다. 그러나 이것은 확실히 나의 돛에서 바람을 빼앗아갔습니다. – byoungb

답변

1

WebDriverJS는 Node.js에서 실행되지 않을 때 새 세션을 만들 수없는 것처럼 보입니다.

세션을 수동으로 만들고 wdsid GET- 매개 변수 (예 : urltowebdriver.html?wdsid=someID&wdurl=localhost:9000)의 세션 ID를 WebDriverJS에 제공해야합니다.

2

그래서 내가 파고 들어가서 해결책이 있다고 생각합니다. 그것은 해킹처럼 보이지만 파이어 폭스에 대해서는, 그리고 파이어 폭스 확장 기능은 내가 지금까지 완벽하게 작동합니다.

내가 편집 한 webdriver.js 파일의 webdriver.Builder.prototype.build 그래서

webdriver.Builder.prototype.build = function() { 
    var a; 
// if(webdriver.FirefoxDomExecutor.isAvailable()) { 
// return a = new webdriver.FirefoxDomExecutor, webdriver.WebDriver.createSession(a, this.getCapabilities()) 
// } 
    a = new webdriver.http.CorsClient(this.getServerUrl()); 
    a = new webdriver.http.Executor(a); 
// if(this.getSession()) { 
// return webdriver.WebDriver.attachToSession(a, this.getSession()) 
// } 
// throw Error("Unable to create a new client for this browser. The WebDriver session ID has not been defined."); 
    return webdriver.WebDriver.createSession(a, this.getCapabilities()); 
}; 

기본적으로 나는 그것이 내가 만든 변화와 파이어 폭스와 크롬에서 잘 작동하기 때문에 FirefoxDomExecutor가 필요한 이유를 확실하지, 세션을 생성하도록 강제하고있다. 어쨌든 나는 올바른 길로 가도록 도와 줘서 고마워. 그러면 다른 사람들에게 도움이되기를 바랍니다.

+0

welcome =) – Senad

+0

코드를 원숭이 패치 할 필요가 없습니다. 이 코드를 로컬 메소드에서 직접 사용하십시오. – jordanpg

관련 문제