Есть ли способ подключить уже запущенный браузер к selenium webdriver в java? [дубликат]

этот вопрос уже есть ответ здесь:

Я разрабатываю приложение, в котором нам нужно проверить, работает ли веб-приложение и url-адрес, дающий ожидаемые результаты.

наш планировщик запустить это приложение 12 раз день. При каждом запуске выполняется драйвер firefox и открывается новое окно браузера для выполнения операций.

Я хочу технику, где мы открываем браузер firefox 1 раз и повторно использовать его в каждом вызове selenium-driver.

2 ответов


Я на самом деле не совсем уверен, что вы можете переключиться на окно, не порожденное драйвером. Я думаю, что люди, работающие над проектом selenium 2, немного поработали над переключением на окно, порожденное другим драйвером. Когда вы делаете:

driver.getWindowHandles()

все, что вы получаете, это окна, порожденные объектом драйвера, который он вызывает.

Это довольно старый запрос: разрешить webdriver для подключения к работающему браузеру . Так что это невозможно. сейчас.


вы можете ознакомиться пример, который я написал это доказывает, что повторное использование браузеров отлично работает в WebDriver. В принципе, пока окно браузера создается из WebDriver, вы можете использовать getWindowHandles (), чтобы всегда хвататься за него. Если у вас открыто несколько окон, просто следите за ними, используя список . Можно определить окна, которые отображаются определенным образом или содержат определенную информацию в них с помощью различных методов WebDriver.

другими словами, если окно браузера не было открыто WebDriver, тогда WebDriver не имеет возможности подключиться к нему.

пример:

public static boolean selectWindow(WebDriver driver, String windowTitle){
    //Search ALL currently available windows
    for (String handle : driver.getWindowHandles()) {
        String newWindowTitle = driver.switchTo().window(handle).getTitle();
        if(newWindowTitle.equalsIgnoreCase(windowTitle))
            //if it was found break out of the wait
            return true;
    }
    return false;

}

в одном проекте я создал метод, который возвращает определенные коды состояния int, в зависимости от моего расположения окон. Если код состояния-это то , что я ожидаю, то я знаю, что следующий тест может продолжаться без повторного входа или без открытия нового окна.

конечно, если ваш тестовый фреймворк, такой как Surefire или TestNG, развилки потоков по классам, затем вам нужен один экземпляр webdriver для каждого класса. Если ваш тестовый фреймворк разветвляется методом, вам нужно будет передать экземпляр webdriver в качестве аргумента методу теста, чтобы поток имел к нему доступ.