【问题标题】:How do you shutdown a ChromeDriver Service?如何关闭 ChromeDriver 服务?
【发布时间】:2016-02-24 20:12:32
【问题描述】:

我已经尝试了一段时间来尝试关闭 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();

这是第一个没有错误通过的单元测试

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)

【问题讨论】:

  • 这篇文章或许能帮到你stackoverflow.com/questions/21320837/…
  • 我刚刚尝试创建一个批处理文件并使用 require('child_process').exec('cmd /c Kill_ChromeDriver.bat');在 Windows 7 上的 node.js 中。
  • 同样的错误信息并且没有新的错误信息,批处理文件与package.json在同一目录下
  • 我仍然需要这方面的帮助。我尝试了各种解决方案,但无法开发出有效的解决方案。我多次尝试运行批处理文件,但似乎无法让它运行批处理文件。

标签: node.js selenium-webdriver selenium-chromedriver


【解决方案1】:

尝试从 CMD 执行此命令:

taskkill /T /F /IM chromeserver.exe

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

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

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

【讨论】:

  • 即使使用您提供的参数,我也无法让它工作。我确实做了一些测试,使用 setTimeout 函数我能够检查并确保 chrome 驱动程序正在运行。我无法让 exec 或 spawn 以任何方式工作。我已多次阅读 child_processes 文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 2011-02-26
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 2017-09-22
相关资源
最近更新 更多