正确的做法正如您在测试中使用driver.quit()
所述。实际上,确切地说是在你的测试清理方法中,因为你每次都想要一个新的浏览器实例。 现在,一些单元测试框架(例如MSTest
)的问题是,如果您的测试初始化方法失败,则不会调用测试清理方法。 作为解决方法,您可以围绕在try-catch
声明您测试初始化与catch
调用和执行您的测试清理。
public void TestInitialize()
{
try
{
//your test initialize statements
}
catch
{
TestCleanup();
//throw exception or log the error message or whatever else you need
}
}
public void TestCleanup()
{
driver.Quit();
}
编辑: 因为当建造被取消,您可以创建杀死Chrome浏览器和ChromeDriver开始测试新套件之前被执行的所有打开的实例的方法的情况下。 例如如果你使用的单元测试框架有类似于Class Initialize
或Assembly Initialize
的东西,你可以在那里做。
然而,在不同的文章中,我发现这种方法:
PORT_NUMBER=1234 lsof -i tcp:${PORT_NUMBER} | awk 'NR!=1 {print $2}' | xargs kill
命令
(lsof -i tcp:${PORT_NUMBER})
的故障 - 列出的TCP端口 (awk 'NR!=1 {print $2}')
监听所有进程 - 忽略第一行,打印每行的第二列 (xargs kill)
- 将结果作为参数传递给kill。可能有几个。
这里,更精确地说:How to find processes based on port and kill them all?
的问题是,究竟是如何杀死正确的情况下 - 我不能杀死所有实例的服务器作为其他并发版本可能运行。 –
我已经更新了我的答案,但从长远来看,您应该考虑更安全的选项,使用driver.Quit()来完成。 – Cosmin