Слияние DesiredCapabilities с FirefoxOptions в Selenium Webdriver приводит к java .lang.NoSuchMethodError - PullRequest
0 голосов
/ 06 февраля 2020

Я получаю: NoSuchMethodError: org.openqa.selenium.firefox.FirefoxOptions.merge, когда я пытаюсь запустить Selenium WebDriver:

Мой код в main вызывает один метод:

WebDriver driver = new WebDriverProfile().getTMPFirefoxProfile(null); // Parameter is optional

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

След стека:

Exception in thread "main" java.lang.NoSuchMethodError: org.openqa.selenium.firefox.FirefoxOptions.merge(Lorg/openqa/selenium/Capabilities;)Lorg/openqa/selenium/firefox/FirefoxOptions;
    at webdriverX.WebDriverProfile.getTMPFirefoxProfile(WebDriverProfile.java:286)
    at n.NMain.main(NMain.java:22)

Призыв к getTMPFirefoxProfile(ProxyPOJO proxyPOJO) вызывает код:

public WebDriver getTMPFirefoxProfile(ProxyPOJO proxyPOJO) throws InterruptedException, MalformedObjectNameException, InstanceNotFoundException, ReflectionException {

    System.setProperty("webdriver.gecko.driver", GlobalVar.geckdriverExecutableFilePath); // Verified path is correct via syso


    DesiredCapabilities capabilities = new DesiredCapabilities();

    if (proxyPOJO != null) {

        Proxy proxy = new Proxy();
        proxy.setHttpProxy(proxyPOJO.getProxyIP() + ":" + proxyPOJO.getProxyPort());
        proxy.setFtpProxy(proxyPOJO.getProxyIP() + ":" + proxyPOJO.getProxyPort());
        proxy.setSslProxy(proxyPOJO.getProxyIP() + ":" + proxyPOJO.getProxyPort());


        capabilities.setCapability(CapabilityType.PROXY, proxy);
    }


    DesiredCapabilities dc = DesiredCapabilities.firefox();


    FirefoxOptions opt = new FirefoxOptions();
    opt.merge(dc);


    opt.addPreference("dom.popup_maximum", 200);
    opt.addPreference("dom.webnotifications.enabled", false); 


    opt.merge(capabilities);

    WebDriver driver = WebDriverX.getNewFireFoxWebDriver(opt);      



    return driver;
}

Звонок на: getNewFireFoxWebDriver(FirefoxOptions firefoxOptions) вызывает этот код:

if (firefoxOptions != null) {
    driver = new FirefoxDriver(firefoxOptions);
} else {
  driver = new FirefoxDriver();
}

 return driver;

Я задал аналогичный вопрос однако Сейчас я попробовал почти 10 различных предложений - ни одно из них не решило мою проблему.

Ниже я опишу шаги, которые я предпринял, чтобы попытаться решить проблему:

1) Щелкните правой кнопкой мыши проект -> Maven clean -> Maven build -> Maven test (я пробовал каждый по отдельности, а затем все по порядку)

2) Clicked Project -> clean

3) Подтверждено Firefox обновлено до последней версии (версия 72)

4) Удалена библиотека guava (только sugg конфликт ested) из проекта POM

5) Завершение работы и перезапуск Eclipse

6) Удаление всех конфигураций запуска и запуск проекта с нуля

7) Повторно загрузил GeckoDriver v0.26.0, чтобы убедиться, что у меня установлена ​​самая маленькая версия

8) Я удостоверился, что POM файл содержит Selenium версию зависимости 3.141.591, которая содержит merge метод

У меня нет параметров .. Что мне делать дальше?

Ниже приведено содержимое проект POM файл:

<dependencies>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-firefox-driver</artifactId>
        <version>3.141.59</version>
    </dependency>

    <dependency>
        <groupId>edu.stanford.nlp</groupId>
        <artifactId>stanford-corenlp</artifactId>
        <version>3.9.2</version>
    </dependency>

    <dependency>
        <groupId>edu.stanford.nlp</groupId>
        <artifactId>stanford-corenlp</artifactId>
        <version>3.9.2</version>
        <classifier>models</classifier>
    </dependency>

    <dependency>
        <groupId>uk.ac.abdn</groupId>
        <artifactId>SimpleNLG</artifactId>
        <version>4.4.8</version>
    </dependency>

</dependencies>

У меня есть два других проекта, связанных в пути сборки этого проекта. Из одного проекта я могу звонить getTMPFirefoxProfile(ProxyPOJO proxyPOJO) без проблем. С другой я получаю ту же ошибку, что и с текущим проектом. Что это значит? Я проанализировал другой проект и не вижу противоречивых зависимостей.

Я провел весь день, пытаясь устранить проблему, но чувствую себя полностью потерянным.

Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 06 февраля 2020

После прикрытия всех возможных проблем и решения по этой проблеме в вашем предыдущем вопросе кажется, что вы уже достаточно близки.

Далее, я бы предложил установить Selenium библиотек для Java с использованием вы должны сначала добавить в свой проект pom.xml зависимость <selenium-java>, поскольку она будет поддерживать запуск проекта автоматизации со всеми поддерживаемыми Selenium браузерами .:

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>3.141.59</version>
</dependency>

Далее, если вы хотите запускать тесты только в Firefox, вы можете заменить на зависимость selenium-firefox-driver:

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-firefox-driver</artifactId>
  <version>3.141.59</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...