Объект общих опций для всех классов опций браузера в Selenium - PullRequest
0 голосов
/ 28 ноября 2018

Ранее я использовал класс 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 Ответ

0 голосов
/ 28 ноября 2018

Вам необходимо использовать метод 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...