Раньше я работал с Cucumber, но в уже настроенной среде на работе.
Сейчас я пытаюсь настроить среду Eclipse/Maven/Cucumber/Junit на своем компьютере.
Итак, я создал проект Maven и использовал один из перечисленных архетипов: «огурец-java-junit-архетип», просто чтобы заставить что-то простое работать, и в конечном итоге я запустил его раньше.
Итак, дальше я хотел попытаться добавить несколько шагов, использующих WebDriver, и нашел следующее:
https://www.browserstack.com/guide/automation-using-cucumber-selenium
Поэтому я добавил новый класс для этого примера, а затем в pom.xml добавил:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-grid</artifactId>
<version>${selenium.version}</version>
</dependency>
но когда я пытаюсь построить проект, я получаю:
[ERROR] Failed to execute goal [32morg.apache.maven.plugins:maven-compiler-plugin:3.5.1:testCompile[m [1m(default-testCompile)[m on project [36mCucumberProject[m: [1;31mCompilation failure[m
[ERROR] [1;31m/E:/Eclipse-Cucumber-workspace/CucumberProject/src/test/java/FirstCucumber/CucumberProject/Steps.java:[5,27] cannot access org.openqa.selenium.By[m
[ERROR] [1;31m bad class file: C:\Users\jl1\.m2\repository\org\seleniumhq\selenium\selenium-api\4.22.0\selenium-api-4.22.0.jar(org/openqa/selenium/By.class)[m
[ERROR] [1;31m class file has wrong version 55.0, should be 52.0[m
[ERROR] [1;31m Please remove or make sure it appears in the correct subdirectory of the classpath.
Кроме того, к вашему сведению, вот мой текущий pom.xml:
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>FirstCucumber</groupId>
<artifactId>CucumberProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Cucumber-Java-JUnit Project</name>
<properties>
<cucumber.version>1.2.4</cucumber.version>
<java.version>1.8</java.version>
<selenium.version>4.22.0</selenium.version>
</properties>
<dependencies>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-grid</artifactId>
<version>${selenium.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>${java.version}</source>
<target>${java.version}</target>
<compilerArgument>-Werror</compilerArgument>
</configuration>
</plugin>
</plugins>
</build>
</project>
Я думаю, что, возможно, версия огурца, которую я использую, несовместима с версией селена? Мне не удалось найти какую-либо конкретную рекомендацию по версии, но я не думаю, что просто пробовать каждую комбинацию — хорошая идея :( !!
Может ли кто-нибудь помочь и сказать мне, как я могу обойти эту ошибку сборки?
Спасибо!!
Джим
РЕДАКТИРОВАТЬ 1: Я нашел эту страницу, и она показывает:
<!-- Dependency versions -->
<cucumber.version>1.2.4</cucumber.version>
<selenium.version>2.48.0</selenium.version>
</properties>
Итак, я попробовал это, но теперь получаю другую ошибку:
Caused by: org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: XP
Build info: version: '2.48.0', revision: 'b7b081a4f1289f17e8ecd38bc67e137c2a12e34a', time: '2015-10-07 09:50:14'
System info: host: 'VOS', ip: '10.0.0.51', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_202'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.internal.Executable.<init>(Executable.java:75)
at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:60)
at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:56)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
at FirstCucumber.CucumberProject.Steps.<init>(Steps.java:19)
... 38 more
Обновлено еще раз: Я добился некоторого прогресса - я добавил путь для firefox.exe в Windows PATH, а затем отскочил от Eclipse, и когда я тестирую после этого, я получаю другую ошибку:
Build info: version: '2.48.0', revision: 'b7b081a4f1289f17e8ecd38bc67e137c2a12e34a', time: '2015-10-07 09:50:14'
System info: host: 'VOS', ip: '10.0.0.51', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_202'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:135)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:271)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:117)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:216)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:211)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:207)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
at FirstCucumber.CucumberProject.Steps.<init>(Steps.java:19)
... 36 more
Caused by: org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:123)
... 43 more
Кажется, что огурец/селен пытается подключиться к firefox.exe через порт 7055 на локальном хосте, но не может подключиться?
Я попытался открыть порт 7055 в брандмауэре Windows, но произошло то же самое.
Я не знаю, что теперь делать :( ....





Вы ошиблись при решении проблемы после того, как получили сообщение об ошибке
class file has wrong version 55.0, should be 52.0.
Это означает, что вы в настоящее время используете Java 8, которая поддерживает файлы классов до версии 52.0. Selenium ожидает, что вы используете как минимум Java 11 (версия файла класса 55.0). Поэтому вам следует убедиться, что версия Java, которую вы используете для запуска и компиляции вашего проекта, не ниже 11.
Кроме того, вы используете Cucumber v1. Cucumber v1 не работает ни с одной версией выше Java 8. Последняя версия Cucumber — v7, работает с Java 8 и любой более поздней версией.
Для начала попробуйте заставить работать последнюю версию Cucumber, следуя 10-минутному руководству или скопировав скелет проекта. После этого вы можете попробовать добавить Selenium в проект. При этом не забудьте использовать как минимум Java 11.
В этом случае вам все равно придется решить проблему соединения между Selenium и вашим драйвером Firefox, но ее будет легче решить, если вы используете последнюю версию Selenium и драйвер Firefox.
Это ответ.
М.П. Корстанье - Вы совершенно правы. Почти вначале я пытался выполнить сборку с помощью Java 11, но столкнулся с проблемами, поэтому затем я отклонился от попыток найти конфигурацию, которая бы работала... бесполезно, да... Итак, можете ли вы сделать свой комментарий ответом, а затем Я приму это.