首页 > 解决方案 > selenium.common.exceptions.WebDriverException:消息:未知错误:无法使用镓和 Docker 杀死 Chrome 错误

问题描述

在每个场景运行后,我们的测试将在远程 webdriver 上执行 .quit() -

 Quits the driver and closes every associated window.

在 docker 容器中运行测试(selenium hub 和 selenium-chrome 版本3.14.0-gallium

由于存在 WebDriver 异常,所有测试都通过了,但结果为假阴性。

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot kill Chrome
  (Session info: chrome=69.0.3497.100)
  (Driver info: chromedriver=2.42.591071 (0b695ff80972cc1a65a5cd643186d2ae582cd4ac),platform=Linux 4.14.67-coreos x86_64)

这可以追溯到

python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 606, in quit
    self.execute(Command.QUIT)

Chromedriver 和 chrome 版本应该根据文档兼容。

标签: pythonseleniumgoogle-chromedockerselenium-chromedriver

解决方案


此错误消息...

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot kill Chrome

...意味着Chrome 浏览器进程没有被彻底杀死


分析

根据带有 chrome:59 的 Zombie docker 容器,这个问题在selenoidDocker中非常明显。

@IvanKrutov 进一步证实:

Docker 中仍然存在一些容器移除问题。

即使尝试通过终止僵尸容器docker rm -f似乎也不起作用,并且已确认是Docker问题。


解决方案

删除容器的唯一方法是卸载文件系统,即remove/var/lib/aufs and restart docker


tl;博士

从另一个角度来看,由于Chrome.exe 仍在后台运行,Chrome 在关闭时不会重新启动

  • 关闭 Chrome 后 Chrome 未重新启动。
  • 据观察,chrome.exe仍在任务管理器中作为进程运行。
  • 强制关闭 Chrome.exe 将允许 Chrome 再次启动,否则 Chrome 将无法启动。
  • 自Google Chrome 版本 69.0.3497.100(官方版本)(64 位)发布以来,此问题似乎再次出现,并且在最近推出的Google Chrome 版本 70.x中仍然继续出现。

推荐阅读