5

我在設置Selenium WebDriverJS時遇到了一些麻煩。我的目標是使用Javascript(節點)在Chrome瀏覽器上運行硒測試。Selenium WebDriverJS,無法爲Chrome構建webdriver

我下面就https://code.google.com/p/selenium/wiki/WebDriverJs的說明以及https://code.google.com/p/chromedriver/wiki/GettingStarted

首先我下載了​​chromedriver,並運行它在終端上:

$ ./chromedriver 
Starting ChromeDriver (v2.2) on port 9515 

然後,我安裝了硒的webdriver:

$ npm install selenium-webdriver 
npm http GET https://registry.npmjs.org/selenium-webdriver 
npm http 304 https://registry.npmjs.org/selenium-webdriver 
[email protected] node_modules/selenium-webdriver 

然後,我啓動了節點控制檯並試圖構建webdriver實例

$ node 
> var webdriver = require('selenium-webdriver') 
undefined 
> var driver = new webdriver.Builder().usingServer('http://localhost:9515/wd/hub').withCapabilities(webdriver.Capabilities.chrome()).build(); 
undefined 
> 
timers.js:103 
      if (!process.listeners('uncaughtException').length) throw e; 
                    ^
UnknownCommandError: unknown command: wd/hub/session 
    at new bot.Error (/selenium/node_modules/selenium-webdriver/lib/atoms/error.js:109:18) 
    at Object.bot.response.checkResponse (/selenium/node_modules/selenium-webdriver/lib/atoms/response.js:103:11) 
    at /selenium/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:133:20 
    at /selenium/node_modules/selenium-webdriver/lib/goog/base.js:1178:15 
    at webdriver.promise.ControlFlow.runInNewFrame_ (/selenium-webdriver/lib/webdriver/promise.js:1438:20) 
    at notify (/selenium/node_modules/selenium-webdriver/lib/webdriver/promise.js:328:12) 
    at notifyAll (/selenium/node_modules/selenium-webdriver/lib/webdriver/promise.js:297:7) 
    at fulfill (/selenium/ 

現在我被封鎖了。有人可以幫我解決這個問題嗎?我在這裏錯過了什麼?

謝謝

回答

13

幾件事情在這裏。

  1. 默認情況下,chromedriver服務器處理/,not/wd/hub處的命令。所以,你應該能夠做到:

    new webdriver.Builder().usingServer('http://localhost:9515').build(); 
    
  2. 如果你想chromedriver有相同的簽名獨立硒服務器,用--url-base=/wd/hub啓動它。

  3. 沒有必要啓動chromedriver自己 - 如果你要求Chrome和省略服務器位置硒的webdriver會爲你做它(確保chromedriver可以在系統上找到PATH):

    new webdriver.Builder() 
        .withCapabilities(webdriver.Capabilities.chrome()) 
        .build(); 
    
+0

謝謝你的回答,我會試試這個! – haejeong87

+0

非常感謝,它非常完美。現在,如果我可能會問,有沒有辦法在代碼中指定chromedriver的位置,而不是使用系統PATH? – haejeong87

+4

我不得不挖掘源代碼,但它是值得的! 'new chrome.ServiceBuilder(PATH_TO_BINARY).build()'是關鍵:) – haejeong87

相關問題