Тестирование Плагинов Браузера С Помощью 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, и они были объединены перед:
- OperaDriver: https://github.com/operasoftware/operadriver/pull/93
- SafariDriver:https://github.com/SeleniumHQ/selenium/pull/87
Опера
этот 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 может сделать трюк.