Селен. Селенида. Файл класса для org.openqa.selenium.WrapsDriver по какой-то причине не найден
Я использую Java в проекте Maven. Когда я пытаюсь использовать функции Selenide в своих тестах, я получаю эту ошибку:
Error:(39, 26) java: cannot access org.openqa.selenium.WrapsDriver
class file for org.openqa.selenium.WrapsDriver not found
В то же время мои тесты хорошо работают без кода Selenide.
Вот мой POM xml:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.13.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
2 ответа
Проблема была решена добавлением депанданса
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>3.14.0</version>
</dependency>
Чтобы объяснить ответ подробно: когда мы добавляем зависимость selenium-java, она вытаскивает под капот среди других зависимостей selenium api:
org.seleniumhq.selenium:selenium-java -> 3.141.59
+--- org.seleniumhq.selenium:selenium-api:3.141.59
+--- org.seleniumhq.selenium:selenium-chrome-driver:3.141.59
+--- org.seleniumhq.selenium:selenium-api:3.141.59
Теперь, если у вас есть какая-либо другая зависимость, которая также использует selenium-api как транзитивную зависимость (в данном случае я думаю, что это селенид), тогда будет несоответствие версии, которое вызовет ошибку.
Явно объявив зависимость как
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>3.14.0</version>
</dependency>
Мы сообщаем нашему инструменту управления сборкой (который также может быть gradle помимо maven), какую именно версию selenium api нужно использовать, и, следовательно, проблема решена.