Объект общих опций для всех классов опций браузера в Selenium
Ранее я использовал класс DesiredCapabilities, чтобы создать универсальный метод для настройки всех возможностей браузера, используя внешний файл (ключ = значение формата). Вот мой код
public DesiredCapabilities setWebDriverCapabilities(String browser) throws IOException {
switch (browser) {
case "ie":
capabilities = new DesiredCapabilities().internetExplorer();
break;
case "firefox":
capabilities = new DesiredCapabilities().firefox();
break;
case "chrome":
capabilities = new DesiredCapabilities().chrome();
break;
case "edge":
capabilities = new DesiredCapabilities().edge();
break;
case "safari":
capabilities = new DesiredCapabilities().safari();
break;
default:
capabilities = null;
}
Properties prop = new Properties();
String FS = File.separator;
prop.load(new FileInputStream("src" + FS + "test" + FS + "resources" + FS + browser + ".capabilities"));
Set < Object > keys = prop.keySet();
for (Object k: keys) {
String key = (String) k;
capabilities.setCapability(key, prop.getProperty(key));
}
return capabilities;
}
Я обнаружил, что рекомендуется использовать классы Options, так как некоторые классы возможностей будут устаревшими. Поэтому я пытаюсь заменить этот метод другим методом, который будет работать для всех классов параметров
- FirefoxOptions
- ChromeOptions
- InternetExplorerOptions
- SafariOptions
- EdgeOptions
Я не могу найти общий тип объекта для всех классов, упомянутых выше, чтобы я мог создать аналогичный метод, в котором я использовал DesiredCapabilities.
Я хочу вернуть общий тип объекта из этого нового метода, чтобы я мог использовать его для всей инициализации драйвера, например
driver = new ChromeDriver(setOptions());
driver = new FirefoxDriver(setOptions());
1 ответ
Вам нужно использовать метод merge()
из класса MutableCapabilities, чтобы объединить объект типаDesiredCapabilities в объект типа ChromeOptions и запустить экземпляр WebDriver и WebClient, передав объект ChromeOptions следующим образом:
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
ChromeOptions options = new ChromeOptions();
options.merge(cap);
driver = new ChromeDriver(options);
Подробное обсуждение можно найти в разделе Как решить "Конструктор ChromeDriver(Capabilities) устарел" и WebDriverException: ошибка тайм-аута с ChromeDriver и Chrome