python - 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 版本应该根据文档兼容。
解决方案
此错误消息...
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot kill Chrome
...意味着Chrome 浏览器进程没有被彻底杀死。
分析
根据带有 chrome:59 的 Zombie docker 容器,这个问题在selenoid和Docker中非常明显。
@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中仍然继续出现。
推荐阅读
- docker - 是否可以从已使用的 Docker 容器创建新的 Docker 映像?
- java - 带有图像的请求中的管道损坏(写入失败)网关 x 服务
- c# - 在 Unity 中存储只读数据的良好做法
- mysql - MySQL DATE_ADD 语句根据书但不会返回结果
- excel - 从 Windows 文件夹读取的 Outlook 消息对于某些值是空白的
- sql-server - 如何在未透视表中创建计算行?
- mongodb - Mongodb:按id过滤父级时增加嵌套数组中的值
- algorithm - RSA加密后用户如何访问他的任何消息?
- ms-access - 仅在列表表单中显示每个员工的最新条目
- html - Django:引导类加载但不是我的 style.css