正確的做法正如您在測試中使用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