5

Ho difficoltà a configurare Selenium WebDriverJS. Il mio obiettivo è eseguire test di selenio sul browser Chrome utilizzando Javascript (nodo).Selenium WebDriverJS, non è possibile creare webdriver per Chrome

sto seguendo le istruzioni a https://code.google.com/p/selenium/wiki/WebDriverJs così come https://code.google.com/p/chromedriver/wiki/GettingStarted

Per prima cosa ho scaricato la chromedriver, e fatto funzionare su un terminale:

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

E poi, ho installato il selenio-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 

Quindi, ho avviato la console del nodo e ho provato a creare l'istanza del 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/ 

E ora sono bloccato. Qualcuno mi può aiutare su questo, per favore? Cosa mi manca qui?

Grazie

risposta

13

Un paio di cose qui.

  1. Per impostazione predefinita, il server chromedriver gestisce i comandi in /, non/wd/hub. Così si dovrebbe essere in grado di fare:

    new webdriver.Builder().usingServer('http://localhost:9515').build(); 
    
  2. Se si desidera che il chromedriver di avere la stessa firma del server standalone selenio, avviarlo con --url-base=/wd/hub.

  3. Non c'è necessità di avviare l'chromedriver da soli - selenio WebDriver lo farà per voi se si richiede Chrome e omette un percorso di server (assicurarsi chromedriver può essere trovato sul vostro sistema PATH):

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

Grazie per la tua risposta, ci proverò! – haejeong87

+0

Grazie mille, ha funzionato perfettamente. Ora, se posso chiedere, c'è un modo per specificare la posizione del chromedriver nel codice invece di usare il PATH di sistema? – haejeong87

+4

Ho dovuto scavare il codice sorgente, ma ne è valsa la pena! 'new chrome.ServiceBuilder (PATH_TO_BINARY) .build()' era la chiave :) – haejeong87

Problemi correlati