2016-02-08 9 views
7

È possibile utilizzare Nightwatch.js senza installare Java? Esistono collegamenti JavaScript Selenium ufficiali (WebDriverJS, selenium-webdriver). C'è una ragione per cui è necessario Java?Nightwatch.js senza Java

+0

Quindi vuoi dire che vuoi creare e. g. alcuni script/snippet per interagire con il server Selenium senza Java? –

+0

@NateStone corretto. So come guidare il browser con WebDriverJS, quindi sono stato sorpreso di vedere che Nightwatch.js richiede Java. –

risposta

1

Well Nightwatch.js esegue i test sul server Selenium. Il server Selenium è un servlet Java.

Quindi per utilizzare Nightwatch.js è necessario "indirettamente" Java (non è necessario per Nightwatch.js, ma per Selenium).

Tuttavia si è in grado di utilizzare linguaggi diversi come selenio client, dal momento che siete in grado di scaricare diversi attacchi WebDriver lingua here

++++++++++++++++++ EDIT ++++++++++++++++++

Questi WebDriver/binding sono indipendenti da Nightwatch.js. È possibile utilizzare questi WebDriver/associazioni senza un server Selenium, se i test e il browser vengono eseguiti sulla stessa macchina. In questo caso non c'è bisogno di Java, in quanto la WebDriver esegue i test direttamente nei confronti di un browser (questo è ulteriormente dettagliato here)

Nightwatch.js d'altra parte richiede definitelly java, perché ha bisogno della "Selenio-Standalone- Server "che è scritto in Java. Per quanto ne so non ci sono altre implementazioni per altre lingue, motivo per cui non è possibile eseguirlo senza java.

Nightwatch invia richieste HTTP al Selenium-Standalone-Server (qui arriva java) e il server crea una sessione con il browser.

Quindi per riassumere: No Java -> No "Selenio-autonomo-Server" -> Nessun test con Nightwatch.js

+0

Grazie, ma non sono sicuro che ci capiamo. È possibile utilizzare Selenium senza utilizzare Java, esistono collegamenti JavaScript Selenium ufficiali. La mia domanda era: perché Nightwatch.js utilizza Java, mentre guidare un browser poteva essere fatto senza di esso. Beh, in realtà, la mia domanda era: c'è un modo per usare Nightwatch.js senza installare Java. Dalla tua risposta sembra che la risposta sia no. –

+0

Ho ulteriormente specificato la mia risposta. Vedi le mie modifiche. –

5

sto catering a una comunità JavaScript così sto cercando di eseguire localmente nightwatchjs senza introdurre Java me stesso. Sono sicuro che se si esegue un server Selenium remoto, tale istanza remota deve avere il server Java in esecuzione per passare i comandi al driver specifico del browser remoto. Ad es .: ChromeDriver.

Detto questo, ho avuto l'impressione che si potrebbe collegare un standard client direttamente ad un WebDriver standard (ChromeDriver) a livello locale, senza dover mettere in scena il server di selenio-server-standalone-2.xx.0.jar Java. Essendo il nightwatchJS il primo client che ho provato, è stato molto difficile trovare una configurazione in cui avrebbe funzionato, dal momento che tutta la documentazione indica cosa sta dicendo sopra Nate Stone. Tutti gli esempi che ho visto indicano che la posizione del selenio-server-standalone-2.xx.0.jar deve essere stipulato:

selenium": { 
    "start_process": true, 
    "server_path": "lib/selenium-server-standalone-2.53.0.jar", 
    "cli_args" : { 
    "webdriver.chrome.driver" : "/Users/greg.kedge/bin/chromedriver" 
    }, 
    "log_path": "integration/log" } 

Lui è quello che posso dire: se vuoi Nightwatch per iniziare (e interrompere) il server per la durata dei test ("start_process": true), sembra che sia necessario eseguire il server Java.

Tuttavia, per gran parte di prova, se si desidera avviare il ChromeDriver sul proprio sulla riga di comando, avendo in tal modo tutto il tempo, ho può eseguire il ChromeDriver senza lo standalone Java selenio. Avvertimento: solo tentato su OS X finora ... Così, assumendo ChromeDriver è nel tuo $ PATH:

% chromedriver --url-base=/wd/hub 
Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 9515 
Only local connections are allowed. 

Ora prendete quella porta (9515) e aggiornare il nightwatch.json dettare che si desidera utilizzare Chrome. Sto impostando l'impostazione predefinita, ma potresti configurare un ambiente specifico per Chrome.Rimuovere il blocco "selenio" dal tuo nightwatch.json del tutto e ora dire Nightwatch dove può trovare un server che esegue E quale tipo di browser che sta servendo:

"test_settings": { 
    "default": { 
     "launch_url": "http://localhost:8888/", 

     "selenium_host": "127.0.0.1", 
     "selenium_port": "9515", 

     "silent": true, 
     "firefox_profile": false, 
     "screenshots": { 
     "enabled": false, 
     "path": "" 
     }, 
     "desiredCapabilities": { 
     "browserName": "chrome", 
     "javascriptEnabled": true, 
     "acceptSslCerts": true, 
     "__commentOut: chromeOptions" : { 
       "args" : ["start-fullscreen"] 
      } 
     }, 
    } 
    } 

Utilizzando in questo modo funziona per me; Posso eseguire nightwatch per guidare Chrome senza un server autonomo Java Selenium in-play. Ancora una volta, questo è su OS X utilizzando un ChromeDriver che è sempre in esecuzione. Non riesco a capire come ottenere Nightwatch per gestire l'avvio/arresto del ChromeDriver senza aggiungere il server autonomo Java Selenium al mix.

0

c'è:

specificare nella global.js il file seguente:

const chromedriver = require('chromedriver'); 

module.exports = { 

before: function (cb) { 
    chromedriver.start(); 
    cb(); 
}, 
after: function (cb) { 
    chromedriver.stop(); 
    cb(); 
}, 

Vai a nightwatch.conf.js specificare il percorso globale lì

In questo modo il selenio verrà deviato tramite Chromedriver senza che sia necessario il selenio sulla macchina.