Как добавить DesiredCapabilities в GeckoDriver в Selenium-Java 3.11

Пытаюсь использовать GeckoDriver для Firefox в selenium-java 3.11, Версия Firefox 59, Все работает нормально, и я могу вызвать драйвер Firefox. Единственная проблема, мне нужно добавить DesiredCapabilities к моему экземпляру Firefox.

Старый метод WebDriver driver = new FirefoxDriver(capabilities); в последней версии селен кажется устаревшим и не может найти новый способ определения возможностей.

Вот код:

public static WebDriver createDriver(String userAgentKey, String PROXY) {


     File modifyHeaders = null;
     try {
     modifyHeaders =
     ResourceUtils.getFile("classpath:modify_headers-0.7.1.1-fx.xpi");  //am adding the extension using DesiredCapabilities
     } catch (FileNotFoundException e1) {

     e1.printStackTrace();
     }

    Proxy proxy = new Proxy();
    proxy.setHttpProxy(PROXY).setFtpProxy(PROXY).setSslProxy(PROXY);



    FirefoxProfile profile = new FirefoxProfile();
    profile.setPreference("javascript.enabled", true);
    profile.setPreference("brower.link.open_newwindow", 1);


    profile.setPreference("modifyheaders.config.active", true);
    profile.setPreference("modifyheaders.config.alwaysOn", true);
    profile.setPreference("modifyheaders.headers.count", 1);
    profile.setPreference("modifyheaders.headers.action0", "Add");
    profile.setPreference("modifyheaders.headers.name0", "Proxy-Authorization");
    profile.setPreference("modifyheaders.headers.value0", "Basic dnNodWtsYUBleHBlZGlhLmNvbTpxZWxsYWZraw==");
    profile.setPreference("modifyheaders.headers.enabled0", true);

    profile.addExtension(modifyHeaders);

    DesiredCapabilities cap = DesiredCapabilities.firefox();
    cap.setCapability(FirefoxDriver.PROFILE, profile);
    cap.setCapability(CapabilityType.PROXY, proxy);
    System.setProperty("webdriver.gecko.driver","/Users/vshukla/Music/geckodriver");

    WebDriver driver = new FirefoxDriver(cap);  //this is deprecated


    return driver;

Как я могу добавить расширение к экземпляру, используя DesiredCapabilities? Какие есть другие варианты для достижения этой цели?

2 ответа

Используйте параметры Firefox:

    FirefoxOptions options = new FirefoxOptions();
    options.setCapability(FirefoxDriver.PROFILE, profile);
    options.setCapability(CapabilityType.PROXY, proxy);

Вы были почти там. Вам нужно использовать метод merge() из класса MutableCapabilities, чтобы объединить объект типа DesiredCapabilities в объект типа FirefoxOptions и инициировать экземпляр WebDriver и WebClient, передав объект FirefoxOptions следующим образом:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.remote.DesiredCapabilities;

System.setProperty("webdriver.gecko.driver","/Users/vshukla/Music/geckodriver");
DesiredCapabilities cap = DesiredCapabilities.firefox();
cap.setCapability(FirefoxDriver.PROFILE, profile);
cap.setCapability(CapabilityType.PROXY, proxy);
FirefoxOptions opt = new FirefoxOptions();
opt.merge(cap);
WebDriver driver = new FirefoxDriver(opt);

PS: в качестве ссылки вы можете посмотреть на обсуждения в mutablecapabilities тег

Другие вопросы по тегам