【发布时间】:2018-06-25 21:51:42
【问题描述】:
Selenium 旨在在像这样处理 webdriver 实例时杀死 Geckodriver 进程:driver.quit()。在我的测试框架中,我已配置为在每次测试后调用driver.quit()。
然而,在某些情况下,测试由于各种原因异常终止,然后没有执行最终步骤(如退出驱动程序)。结果,我最终得到了多个只能手动终止的 geckodriver 进程。
有什么好的做法可以解决这个问题吗?也许以某种方式监视进程并杀死不传输任何数据的进程?
或者也许创建几个实例然后重用它们?
我在 Grid 上运行我的测试,因此通过命令行操作该进程将不起作用,因为它只会影响网格集线器。
编辑:
可以选择使用taskkill 来终止机器上的所有 geckodriver 进程,但这不是一个好的解决方案,因为:
- 我正在通过 Selenium Grid 运行我的测试,因此这只会影响网格集线器而不影响节点。
- 有多个测试同时运行,如果我使用
taskkill,我也会杀死仍在使用的测试。 - 我不认为使用
taskkill终止进程通常是一个好习惯,我想找到一个更优雅的解决方案。例如。 (1)geckodriver 进程在节点上受到监控,只有在不使用或 (2) 以某种方式重用时才在本地终止。
【问题讨论】:
-
@DebanjanB 是的,我已经看到了问题和答案,这与我的情况无关。首先,我不认为使用
taskkill杀死进程是一个好习惯,因为我通过网格运行测试,这只会影响网格集线器而不影响节点。其次,我想找到一个更优雅的解决方案,在节点上监视 geckodriver 进程,并且仅在它们不使用时在本地终止。正如我所提到的,另一种选择是以某种方式重用这些流程。我也将此添加到我的问题中。
标签: java selenium selenium-grid geckodriver