如何杀死以前由Web驱动程序打开的浏览器实例(chrome)

问题描述 投票:2回答:2

我想杀死以前由Web驱动程序打开的浏览器实例(chrome)。我该怎么办?在我下面的代码中,我故意不想包含quit()或close(),因为我想让浏览器保持打开状态。因此,每次执行或运行此程序时,我都想杀死/关闭先前打开的浏览器,然后启动一个新实例并保持打开状态。因此,一次只能打开一个浏览器实例。我正在使用Mac。

public static void main(String[] args){

    String website = "http://www.google.com";
    System.setProperty(".....");
    WebDriver driver = new ChromeDriver();
    driver.get(website);

}

行为atm是每次执行此操作时,chrome实例都会堆积起来。避免这种情况的最佳方法是什么?我不是为了测试目的而这样做的。我这样做是因为我想自动执行任务。谢谢。

java macos selenium selenium-webdriver
2个回答
0
投票

你可以尝试这个代码:

public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "D:\\Automation\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.google.com/");
        try{
            Runtime.getRuntime().exec("TASKKILL /F /IM chrome.exe");
        }
        catch(IOException io){
            System.out.println(io.getMessage());
        }
    }  

注意:它将终止先前与新打开的实例一起打开的所有chrome实例。


0
投票

如果我理解正确,您正在尝试自动执行部分流程,然后让自动化程序退出,让浏览器保持打开状态,以便手动完成其余步骤。在这种情况下,确保只打开一个这样的窗口的最佳方法是保持自动化脚本空闲,直到完成手动任务。在你的主要功能结束时这样的事情:

try {
    while(true) { 
        Thread.sleep(1000); 
        driver.getCurrentUrl(); 
    } 
} catch(Exception e) {}

只要浏览器窗口打开,就可以确保程序保持活动状态。您可以在浏览器中继续手动处理。完成后,您可以关闭浏览器,这将自动结束此过程。或者在开始新任务之前,使用^ c删除旧任务,然后关闭浏览器。

不保持自动化脚本空闲的第二个选项是查找新创建的浏览器实例的进程ID。您可以将进程ID保存在临时文件夹中的某个文件中。每次脚本启动时,它都会检查文件,从中读取pid,如果进程ID存在,请尝试在生成新的浏览器窗口之前将其终止。

© www.soinside.com 2019 - 2024. All rights reserved.