Почему Selenium Webdriver открывает новое окно при каждом запуске скрипта и как это исправить? - PullRequest
0 голосов
/ 17 февраля 2019

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

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

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

new chrome instances

Кодовые испытания:

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");

    }

}

base instance.,new instance not logged in

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

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

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

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

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


Расширения Chrome

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

Чтобы упаковать распакованное расширение, используйте кнопку Pack в 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);
    
0 голосов
/ 18 февраля 2019

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

driver.Quit();

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

...