5

Mam problem z konfiguracją Selenium WebDriverJS. Moim celem jest uruchomienie testów selenu w przeglądarce Chrome przy użyciu Javascript (węzeł).Selenium WebDriverJS, nie można zbudować programu Webdriver dla przeglądarki Chrome

ja postępując zgodnie z instrukcjami na https://code.google.com/p/selenium/wiki/WebDriverJs jak https://code.google.com/p/chromedriver/wiki/GettingStarted

Pierwszy Pobrałem chromedriver, a prowadził ją na terminalu:

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

A potem, po zainstalowaniu selenu 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 

Następnie uruchomiłem konsolę węzła i próbowałem zbudować instancję 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/ 

A teraz jestem zablokowany. Czy ktoś może mi w tym pomóc? Czego tu mi brakuje?

Dzięki

Odpowiedz

13

Kilka rzeczy tutaj.

  1. Domyślnie serwer chromedriver obsługuje polecenia w /, nie/wd/hub. Więc powinieneś być w stanie to zrobić:

    new webdriver.Builder().usingServer('http://localhost:9515').build(); 
    
  2. Jeśli chcesz chromedriver mieć taki sam podpis jako samodzielny serwer selen, uruchom go z --url-base=/wd/hub.

  3. Nie ma potrzeby, aby rozpocząć chromedriver siebie - selen-webdriver zrobi to za Ciebie, jeśli poprosisz Chrome i pominięcie lokalizacji serwera (upewnij chromedriver można znaleźć w systemie PATH):

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

Dziękuję za odpowiedź, spróbuję tego! – haejeong87

+0

Wielkie dzięki, działało idealnie. Teraz, jeśli mogę zapytać, czy istnieje sposób określenia położenia chromiedriver w kodzie zamiast używania PATH systemu? – haejeong87

+4

Musiałem wykopać kod źródłowy, ale było warto! 'new chrome.ServiceBuilder (PATH_TO_BINARY) .build()' był kluczem :) – haejeong87

Powiązane problemy