Тестирование с помощью браузера с селеном

Я пишу webapp, у которого есть компонент плагина браузера для Firefox и хром. Моя текущая система тестирования использует серию тестов Selenium, созданных с помощью Selenium IDE.

Можно ли также установить селен, активировать и удалить плагины браузера для firefox и chrome (возможно, другие браузеры)?

Я думаю, что самая большая проблема заключается в том, что установка/включение плагина браузера требует перезапуска браузера, и я не уверен, что это произойдет через селен.

Приобретение плагина легко обрабатывается путем посещения внутренней ссылки сайта на php- script, которая обнаруживает ваш браузер.

Ответ 1

Ответ Да, Selenium 2 поддерживает (удаленную) установку расширений браузера.

Chrome и Firefox WebDriver поддерживают установку расширений удаленно. Здесь пример кода для Chrome и Firefox:

Chrome

File file = new File("extension.crx"); // zip files are also accepted
ChromeOptions options = new ChromeOptions();
options.addExtensions(file);

// Option 1: Locally.
WebDriver driver = new ChromeDriver(options);

// Option 2: Remotely
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

Firefox

File file = new File("extension.xpi");
FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.addExtension(file);

// Option 1: Locally
WebDriver driver = new FirefoxDriver(firefoxProfile);

// Option 2: Remotely
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(FirefoxDriver.PROFILE, firefoxProfile);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

Я также внедрил автоматическую установку расширений Opera и Safari, и они были объединены вверх по течению:

Opera

Этот API похож на FirefoxDriver.

File file = new File("extension.oex"); // Must end with ".oex"
OperaProfile operaProfile = new OperaProfile();
operaProfile.addExtension(file);

// Option 1: Locally
WebDriver driver = new OperaDriver(operaProfile);

// Option 2: Remotely
DesiredCapabilities capabilities = DesiredCapabilities.opera();
capabilities.setCapability("opera.profile", operaProfile);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

Safari

Этот API похож на ChromeDriver.

File file = new File("extension.safariextz");
SafariOptions options = new SafariOptions();
options.addExtensions(file);

// Option 1: Locally.
WebDriver driver = new SafariDriver(options);

// Option 2: Remotely
DesiredCapabilities capabilities = DesiredCapabilities.safari();
capabilities.setCapability(SafariOptions.CAPABILITY, options);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

Internet Explorer

Удачи.

Ответ 2

Короткий ответ: нет

Установка расширения браузера выходит за рамки обработки в Selenium.

В Chrome он отображает модальное окно, которое не является "кликабельным" с помощью Selenium, если вы хотите добавить плагин или приложение. Chrome не требует перезапуска.

У Firefox есть такое же поведение, чтобы запрашивать разрешения на расширение.

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