當使用 Selenium 時自動化測試中,呼叫 quit() 方法來終止 WebDriver 實例並關閉瀏覽器會話非常重要。但是,如果您想在關閉瀏覽器之前分析測試結果或修復任何問題,您可能需要避免 quit() 呼叫。
根據最佳實踐,建議在tearDown()或After方法中調用quit(),以確保正確的清理並防止潛在的內存洩漏。呼叫 quit() 會向 WebDriver 實例傳送帶有附加標誌的「quit」命令,從而正常終止瀏覽器會話。
如果不呼叫quit(),後續的每次測試運行都會留下一個在記憶體中累積的geckodriver. exe 進程,可能會導致效能問題。無論您是否手動關閉瀏覽器,這種記憶體累積都會持續存在。
儘管建議呼叫 quit(),但您也可以使用外部解決方案如果需要,殺死懸空的 geckodriver 實例。以下是您可以使用的三個程式碼區塊:
import java.io.IOException; public class Kill_ChromeDriver_GeckoDriver_IEDriverserver { public static void main(String[] args) throws Exception { Runtime.getRuntime().exec("taskkill /F /IM geckodriver.exe /T"); Runtime.getRuntime().exec("taskkill /F /IM chromedriver.exe /T"); Runtime.getRuntime().exec("taskkill /F /IM IEDriverServer.exe /T"); } }
import os os.system("taskkill /f /im geckodriver.exe /T") os.system("taskkill /f /im chromedriver.exe /T") os.system("taskkill /f /im IEDriverServer.exe /T")
import os import psutil PROCNAME = "geckodriver" # or chromedriver or IEDriverServer for proc in psutil.process_iter(): # check whether the process name matches if proc.name() == PROCNAME: proc.kill()
以上是如何在不使用「driver.quit()」的情況下管理 geckodriver 進程並防止 Selenium 記憶體洩漏?的詳細內容。更多資訊請關注PHP中文網其他相關文章!