Как убить экземпляр браузера (chrome), который был ранее открыт веб-драйвером - PullRequest
0 голосов
/ 04 мая 2018

Я хочу уничтожить экземпляр браузера (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 просто накапливается. Каков наилучший способ избежать этого? Я делаю это не для тестирования. Я делаю это потому, что хочу автоматизировать задачу. Благодарю.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Если я правильно понимаю, вы пытаетесь автоматизировать часть потока, а затем разрешите программе автоматизации выйти, оставив браузер открытым для выполнения остальных шагов вручную. В этом случае лучший способ убедиться, что открыто только одно такое окно, состоит в том, чтобы скрипт автоматизации оставался на холостом ходу до тех пор, пока вы не закончили с заданием вручную. Примерно так в конце вашей основной функции:

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

Будет гарантировать, что программа остается активной, пока открыто окно браузера. Вы можете продолжить ручной процесс в браузере. Как только вы закончите, вы можете закрыть браузер, который автоматически завершит этот процесс. Или перед началом новой задачи вы убиваете старую с помощью ^ c, что, в свою очередь, закрывает браузер.

Вторым вариантом, не поддерживающим скрипт автоматизации на холостом ходу, будет поиск идентификатора процесса вновь созданного экземпляра браузера. Вы можете сохранить идентификатор процесса в некотором файле во временной папке. Каждый раз, когда ваш скрипт запускается, он проверяет файл, читает из него pid, и, если идентификатор процесса существует, попытается уничтожить его, прежде чем запустить новое окно браузера.

0 голосов
/ 04 мая 2018

Вы можете попробовать этот код :

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 вместе с недавно открытым экземпляром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...