場(chǎng)景:一個(gè)網(wǎng)站的登錄部分用到了selenium,但是在多次登錄之后劣纲,發(fā)現(xiàn)進(jìn)程里殘留了很多的chromedriver.exe進(jìn)程爵憎。項(xiàng)目打成jar包之后放到另外的機(jī)器上跑,發(fā)現(xiàn)不久之后就開(kāi)始卡頓混槐,甚至于彈不出瀏覽器的窗口,所以懷疑是不是因?yàn)閏hromedriver.exe殘留進(jìn)程太多導(dǎo)致的轩性。
原始的代碼:
System.setProperty("webdriver.chrome.driver", webDriverPath);
? ? ? ? WebDriver driver = new ChromeDriver();? ? ? ? driver.get("xxxxxxxxxx");
關(guān)閉是用的driver.quit(),而不是driver.close()声登。這兩個(gè)區(qū)別如下:
close只會(huì)關(guān)閉當(dāng)前窗口;
quit會(huì)推出驅(qū)動(dòng)別切關(guān)閉所關(guān)聯(lián)的所有窗口揣苏;
最終解決的代碼:
? ChromeDriverService service = new ChromeDriverService.Builder().usingDriverExecutable(new File(webDriverPath)).usingAnyFreePort().build();
? ? ? ? try {
? ? ? ? ? ? service.start();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? WebDriver driver = new RemoteWebDriver(service.getUrl(), DesiredCapabilities.chrome());
? ? ? ? driver.get("xxxxxxxx");
關(guān)閉的代碼:
driver.quit();
service.stop();