Добавление расширения к драйверу Chrome Selenium2 (WebDriver)

Я использую код ниже, чтобы запустить хром с помощью веб-драйвера (селен 2)

            Map<String, String> mobileEmulation = new HashMap<String, String>();
            mobileEmulation.put("deviceName", "BlackBerry PlayBook");

            Map<String, Object> chromeOptions = new HashMap<String, Object>();
            chromeOptions.put("mobileEmulation", mobileEmulation);
            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
            driver = new ChromeDriver(capabilities);

Как я могу также загрузить расширение Chrome, сохраняя при этом указанные выше параметры?


person Arya    schedule 08.03.2016    source источник
comment
Я тоже ищу способ сделать это. Но каждый пример, который я нашел, загружает только одно расширение и больше ничего. Как кто-то может загрузить расширение И установить любое другое значение, переключатель или режим эмуляции?   -  person MivaScott    schedule 17.03.2017


Ответы (2)


Наконец-то разобрался!

На странице возможностей ChromeDriver необходимо преобразовать файл .crx в строку с кодировкой base-64. Таким образом, окончательный ответ будет выглядеть примерно так:

ArrayList<String> ext = new ArrayList<>();
extensionLocation = extensionDir + sep + extensionName + ".crx";
extension = new File(extensionLocation);
if (extension.exists() && !extension.isDirectory()) {
    ext.add(Data.base64Encoder(extensionLocation));
}
chromeOptions.put("extensions", ext);

Где Data.base64encoder() — мой собственный метод кодирования. Существует множество примеров того, как это сделать в зависимости от версии Java, которую вы используете. В основном отправьте ему местоположение, прочитайте его в двоичном формате и верните строку.

person MivaScott    schedule 17.03.2017

Используйте приведенный ниже код: -

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

Надеюсь, это поможет вам :)

person Shubham Jain    schedule 08.03.2016
comment
вы можете обратиться: - stackoverflow.com/questions/34222412/ - person Shubham Jain; 08.03.2016
comment
Спасибо, но я также хочу открыть хром с настройками мобильной эмуляции. - person Arya; 08.03.2016