Проблема при исполнении кода если в разных библиотеках одинаковый путь до класса

Добрый день!
Проблема в проекте следующая:
Подключена в зависимостях библиотека java-client (7.6.0)
И selenide 6.2.0

при запуске тестов падает следующая ошибка:

java.lang.NoSuchMethodError: org.openqa.selenium.WebDriver$Timeouts.pageLoadTimeout(Ljava/time/Duration;)Lorg/openqa/selenium/WebDriver$Timeouts;
at com.codeborne.selenide.webdriver.WebDriverFactory.setLoadTimeout(WebDriverFactory.java:83)
at com.codeborne.selenide.webdriver.WebDriverFactory.createWebDriver(WebDriverFactory.java:73)
at com.codeborne.selenide.drivercommands.CreateDriverCommand.createDriver(CreateDriverCommand.java:78)
at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.createDriver(WebDriverThreadLocalContainer.java:170)
at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.getAndCheckWebDriver(WebDriverThreadLocalContainer.java:156)
at com.codeborne.selenide.WebDriverRunner.getAndCheckWebDriver(WebDriverRunner.java:130)
at com.codeborne.selenide.impl.StaticDriver.getAndCheckWebDriver(StaticDriver.java:65)
at com.codeborne.selenide.SelenideDriver.getAndCheckWebDriver(SelenideDriver.java:206)
at com.codeborne.selenide.logevents.SelenideLogger.run(SelenideLogger.java:152)
at com.codeborne.selenide.drivercommands.Navigator.open(Navigator.java:85)
at com.codeborne.selenide.SelenideDriver.open(SelenideDriver.java:97)
at com.codeborne.selenide.Selenide.open(Selenide.java:124)

Изучив код проекта selenide, я вижу следующий метод:

private void setLoadTimeout(Config config, WebDriver webdriver)

Ожидается, что на вход приходит WebDriver из selenium-api

Но при запуске самого кода, я вижу, что на вход передается WebDriver из java-client

Пакеты для этих двух классов абсолютно идентичны (org.openqa.selenium.WebDriver)

Какие способы есть что бы обойти эту проблему? Компилятор будто не понимает что именно передается.

ПС
Нашла, что основная проблема при вызове
new ChromeDriver(this.buildService(config), chromeOptions)
Если провалиться внутрь, то можно увидеть наследование в таком порядке:

ChromeDriver extends ChromiumDriver… extends RemoteWebDriver implements WebDriver
И вот тут и главная проблема, что WebDriver берется не тот, который нужен

Библиотека “java-client” - это, видимо, Appium? Их последняя стабильная версия 7.6.0 пока не поддерживает Selenium 4.x (а значит, и Selenide 6.x). Вам придётся пока сидеть на Selenide 5.x

Вот когда выйдет “java-client 8.x”, тогда обновляйтесь на Selenide 6.x.

NB! А проще всего использовать одну зависимость “selenide-appium” - она подтянет и селенид, и аппиум нужных версий.

1 лайк

Да, я таки нашла путь подключить бетта версию 8ю. А идея с одной зависимостью selenide-appium мне нравится больше.
Я стянула из гита и увидела, что версия Селенида 5.25 последняя. Решила пока по раздельности)

1 лайк

Поделитесь, что за путь такой?

Да я подтянула бетта версию 8ю java-client.
Я даже пока не нашла кто из наших использует аппиум, так что “пусть пока так лежит”.
Просто ненужный хвост за собой таскаем

Если так, я бы посоветовал удалить эту зависимость.

Я понимаю, что это далеко от хорошего решения. Но есть возможность в любой момент вернуться к 5.25

Не понял, какая связь. Вернуться на 5 версию вы можете точно так же и с аппиумом, и без аппиума.

Может мы друг друга не понимаем)
Сейчас у меня 6я версия Селенида и для решения проблемы с зависимостями, я подключила аппиум 8ю бетта версию

Если будут проблемы с этой версией аппиума, то я подключу 5ю версию Селенида и 7ю Аппиума.