2016-02-24 2 views
5

Я пробовал некоторое время, чтобы попытаться отключить службу ChromeDriver, и я не могу разработать решение о том, как это сделать. Я делаю единичный тест, используя мокко и чай. Первый тест проходит, а второй - из-за ошибки.Как завершить работу службы ChromeDriver?

Я пробовал искать в модуле selenium-webdrive/chrome.js и не смог найти функцию для закрытия службы. Я попытался найти ответы, но ничего не нашел в Интернете. Возможно, мой подход к созданию драйвера chrome необходимо переделать. Я попытался обернуть создание службы и настройку службы по умолчанию в выражении if с помощью команды selenium-webdriver/chrome.js.getDefaultService(). IsRunning(), но он не прошел первый тест. Я смущен этим, и это, скорее всего, связано с недостатком знаний.

Этот блок называется вызывается во время каждого блока теста

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

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

Это первый тестовый модуль, который проходит без ошибок

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'); 
}); 

Это второй тестовый модуль, который вызывает его на провал

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'); 
}); 

Сообщение об ошибке:

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

Это сообщение может быть в состоянии помочь вам HTTP: // stackoverflow.com/questions/21320837/release-selenium-chromedriver-exe-from-memory – KCaradonna

+0

Я просто попытался создать пакетный файл и использовать require ('child_process'). exec ('cmd/c Kill_ChromeDriver.bat'); в node.js на окнах 7. – Grim

+0

Такое же сообщение об ошибке и никаких новых сообщений об ошибках, командный файл находится в том же каталоге, что и package.json – Grim

ответ

0

Попробуйте выполнить эту команду CMD:

taskkill /T /F /IM chromeserver.exe 

Когда я использую селен, чтобы выполнить мои сценарии автоматизации, каждый раз, когда появляется новый экземпляр этого драйвера работает (вы можете увидеть, если вы откроете диспетчер задач).

Я использую Java для написания сценариев, так что я делаю то, что я добавляю эту линию для уничтожения любых активных задач в начале моего теста:

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

Я не могу заставить его работать даже с аргументом, который вы предоставили. Я сделал некоторое тестирование, и с помощью функции setTimeout я смог проверить и убедиться, что драйвер chrome запущен. Я не мог заставить exec или spawn работать в любом случае. Я несколько раз читал документ child_processes. – Grim

Смежные вопросы