2016-02-24 1 views
5

Ich habe schon eine Weile versucht, den ChromeDriver-Dienst herunterzufahren, und ich kann keine Lösung dafür finden. Ich mache einen Unit Test mit Mocha und Chai. Der erste Test ist erfolgreich und der zweite Test ist aufgrund des Fehlers fehlgeschlagen.Wie wird ein ChromeDriver-Dienst heruntergefahren?

Ich habe versucht, im selen-webdrive/chrome.js Modul zu suchen und konnte keine Funktion zum Schließen des Dienstes finden. Ich habe versucht, nach Antworten zu suchen, konnte aber auch nichts im Internet finden. Vielleicht muss mein Ansatz zum Erstellen des Chrome-Treibers überarbeitet werden. Ich habe versucht, die Erstellung des Dienstes und die Einstellung des Standarddienstes in einer if-Anweisung mit 'selen-webdriver/chrome.js'.getDefaultService(). IsRunning() einzufügen, aber es schlägt den ersten Test fehl. Ich bin darüber ratlos und es liegt wahrscheinlich an mangelndem Wissen.

Dieser Block von aufgerufenen während jeder Komponententest

var service = new chrome.ServiceBuilder(chromePath).build(); 
    chrome.setDefaultService(service); 

    driver = new webdriver.Builder() 
     .withCapabilities(webdriver.Capabilities.chrome()) 
     .build(); 

Dies ist das erste Gerät zu testen, die verstreicht, ohne Fehler

it('Should pass if the Driver is set to equal the Chrome driver by using chrome', function() 
{ 
     var chromeDriver = Driver({ browserName: 'chrome' }); 
     expect(chromeDriver.getCapabilities().browserName).to.equal('Google Chrome'); 
}); 

Dies ist die zweite Einheit Test, der es aufgerufen wird, verursacht

auszufallen
it('Should pass if the Driver is set to equal the Chrome driver by using google chrome', function() 
{ 
     var chromeDriver = Driver({ browserName: 'google chrome' }); 
     expect(chromeDriver.getCapabilities().browserName).to.equal('Google Chrome'); 
}); 

Fehlermeldung:

Error: The previously configured ChromeDriver service is still running. You must shut it down before you may adjust its configuration. 
    at Error (native) 
    at Object.setDefaultService (C:\Users\charles.sexton\WebstormProjects\node_modules\selenium-webdriver\chrome.js:346:11) 
    at module.exports (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\src\OrasiDriver.js:90:16) 
    at Context.<anonymous> (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\test\test.js:28:32) 
    at callFn (C:\Users\charles.sexton\WebstormProjects\node_modules\mocha\lib\runnable.js:315:21) 
    at Test.Runnable.run (C:\Users\charles.sexton\WebstormProjects\node_modules\mocha\lib\runnable.js:308:7) 
    at Runner.runTest (C:\Users\charles.sexton\WebstormProjects\node_modules\mocha\lib\runner.js:422:10) 
    at C:\Users\charles.sexton\WebstormProjects\node_modules\mocha\lib\runner.js:533:12 
    at next (C:\Users\charles.sexton\WebstormProjects\node_modules\mocha\lib\runner.js:342:14) 
    at C:\Users\charles.sexton\WebstormProjects\node_modules\mocha\lib\runner.js:352:7 
    at next (C:\Users\charles.sexton\WebstormProjects\node_modules\mocha\lib\runner.js:284:14) 
    at Immediate._onImmediate (C:\Users\charles.sexton\WebstormProjects\node_modules\mocha\lib\runner.js:320:5) 
+0

Dieser Beitrag der Lage sein, kann Sie http helfen: // stackoverflow.com/questions/21320837/release-selenium-chromedriver-exe-from-memory – KCaradonna

+0

Ich habe gerade versucht, eine Batch-Datei zu erstellen und require ('child_process'). exec ('cmd/c Kill_ChromeDriver.bat'); in node.js auf Windows 7. – Grim

+0

Gleiche Fehlermeldung und keine neuen Fehlermeldungen, die Batch-Datei befindet sich im selben Verzeichnis wie die package.json – Grim

Antwort

0

Versuchen Sie diesen Befehl von CMD ausführen:

taskkill /T /F /IM chromeserver.exe 

Wenn ich Selen verwenden, um meine Automatisierung Skripte ausführen, jedes Mal gibt es eine neue Instanz dieses Treibers ausgeführt wird (die Sie sehen können, wenn Sie Ihre öffnen Taskmanager).

ich Java für Scripting verwenden, also was ich tue, ist, dass ich diese Linie für das Töten aller aktiven Aufgaben am Anfang meines Tests hinzufügen:

Runtime.getRuntime().exec("taskkill /T /F /IM chromedriver.exe"); 
+0

Ich kann es nicht funktionieren, selbst mit dem Argument, das Sie zur Verfügung gestellt haben. Ich habe einige Tests durchgeführt und mit der setTimeout-Funktion konnte ich überprüfen und sicherstellen, dass der Chrome-Treiber ausgeführt wird. Ich konnte weder Exekutive noch Spawn zur Arbeit bekommen. Ich habe den child_processes doc mehrmals gelesen. – Grim