Тестирование Плагинов Браузера С Помощью Selenium

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

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

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

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

2 ответов


ответ да, 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, и они были объединены перед:

Опера

этот 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);

сафари

этот 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

удачи.


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

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

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

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

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