Почему Selenium Webdriver открывает новое окно при каждом запуске скрипта и как это исправить?

Я пытаюсь запустить следующий код. Но каждый раз, когда я запускаю новое окно Chrome, открывается. Как решить эту проблему. Кроме того, новый открытый экземпляр Chrome — это не вошел, поэтому я не могу использовать уже установленное расширение. Любой способ решить эту проблему?

Любая помощь будет оценена.

Я предоставил скриншот для того же:

Почему Selenium Webdriver открывает новое окно при каждом запуске скрипта и как это исправить?

Испытания кода:

package com.webdriver;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class WebElements {

    public static void main(String[] args) {

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

    }

}

Почему Selenium Webdriver открывает новое окно при каждом запуске скрипта и как это исправить? . . Почему Selenium Webdriver открывает новое окно при каждом запуске скрипта и как это исправить?

Это ожидаемое поведение, тут ничего не исправить. Для загрузки расширений вы можете следить за эта почта

Guy 17.02.2019 15:29

@ Парень, хорошо... спасибо... есть ли альтернатива firebug/firepath?

user10146017 17.02.2019 15:39

В Chrome у вас есть инструменты разработчика F12

Guy 17.02.2019 16:23
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
3
5 894
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вы просто хотите, чтобы окно закрывалось в конце, вы можете вызвать

driver.Quit();

и это должно закрыть его и очистить.

Ответ принят как подходящий

Когда вы выполняете свой код каждый раз, когда создается новый экземпляр ChromeDriver, который порождает новый сеанс Браузер Chrome. Эта функциональность согласно дизайну.

Лучшим подходом было бы вызвать driver.quit() в методе tearDown(){}, чтобы изящно закрыть и уничтожить экземпляры Вебдрайвер и Веб-браузер после каждого запуска Выполнение теста. Вы можете найти подробный обсуждение здесь.

Хотя это решило бы проблему нескольких окон Браузер Chrome, вы все равно не будете залогинился в новом сеансе. Чтобы войти в систему, вам нужно использовать определенный Профиль Chrome и сохранить печенье и повторно использовать их позже. Вы найдете подробное обсуждение того, как создать и открыть новый профиль Chrome в это обсуждение.

Чтобы использовать расширение, которые вы установили, вам нужно их упаковать/распаковать и использовать класс ChromeOptions.


Расширения Chrome

Расширения Chrome могут быть упакованы или распакованы. Упакованные расширения представляют собой один файл с расширением .crx. Распакованные расширения — это каталог, содержащий расширение, включая файл manifest.json.

Чтобы упаковать распакованное расширение, используйте кнопку «Упаковать» в chrome://extensions или используйте Chrome (пример для Windows):

chrome.exe --pack-extension=C:\path\to\unpacked\extension --pack-extension-key=C:\myext.pem 

См. документы по расширениям, чтобы узнать о других способах сделать это, более удобных для автоматизации. Чтобы распаковать упакованное расширение, просто разархивируйте файл (вам может потребоваться переименовать файл с .crx на .zip, чтобы утилита zip его распознала).

Использование расширений через ChromeDriver

  • Упаковано (файл .crx):

    ChromeOptions options = new ChromeOptions();
    options.addExtensions(new File("/path/to/extension.crx"));
    WebDriver driver = new ChromeDriver(options);
    
  • Распакованный (каталог):

    ChromeOptions options = new ChromeOptions();
    options.addArguments("load-extension=/path/to/extension");
    WebDriver driver = new ChromeDriver(options);
    

привет, это загружает только одно расширение .. как добавить несколько путей к файлам ..

user10146017 03.03.2019 19:34

Использование последних банок Selenium 4 Java и jar сервера Selenium решило мою проблему с дополнительным окном браузера Chrome.

https://www.селениум.dev/downloads/

Другие вопросы по теме