你如何关闭ChromeDriver服务?

Gri*_*rim 5 node.js selenium-chromedriver selenium-webdriver

我已经尝试了一段时间试图关闭ChromeDriver服务,我无法开发出如何解决方案.我正在使用mocha和chai进行单元测试.第一次测试通过,第二次测试因错误而失败.

我试着查看selenium-webdrive/chrome.js模块,找不到关闭服务的功能.我试着寻找答案但在网上找不到任何东西.也许我的创建Chrome驱动程序的方法需要重新设计.我尝试使用'selenium-webdriver/chrome.js'.getDefaultService().isRunning()在if语句中包装服务的创建和默认服务的设置,但是第一次测试失败了.我很难过,这很可能是由于缺乏知识.

在每个单元测试期间调用此被调用块

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

    driver = new webdriver.Builder()
        .withCapabilities(webdriver.Capabilities.chrome())
        .build();
Run Code Online (Sandbox Code Playgroud)

这是第一次无错误通过的单元测试

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');
});
Run Code Online (Sandbox Code Playgroud)

这是导致其失败的第二个单元测试

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');
});
Run Code Online (Sandbox Code Playgroud)

错误信息:

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)
Run Code Online (Sandbox Code Playgroud)

Pra*_*eek 0

尝试从 CMD 执行此命令:

taskkill /T /F /IM chromeserver.exe
Run Code Online (Sandbox Code Playgroud)

当我使用 selenium 执行自动化脚本时,每次都会运行该驱动程序的一个新实例(如果打开任务管理器,您可以看到该实例)。

我使用 Java 编写脚本,所以我所做的是添加此行以在测试开始时终止任何活动任务:

Runtime.getRuntime().exec("taskkill /T /F /IM chromedriver.exe");
Run Code Online (Sandbox Code Playgroud)