我已经被困了几个小时而且我有点困惑,因为我已经尝试使用IntelliJ作为IDE来设置Cucumber(Java版本)+ Selenium的相当多的教程但是我总是从一开始就收到错误,所以我猜测教程中没有提到或者我的IDE上存在一些错误配置。
这是我尝试的内容:
首先,在IntelliJ IDEA中创建了一个Maven项目,并将黄瓜,junit和selenium的依赖项添加到我的pom.xml中:
<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-java -->
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.2.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-junit -->
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
然后我为我的项目创建了一些结构:
在我的MyTest.feature中,我添加了一个简单的测试:
Feature: Check addition in Google calculator
Scenario: Addition
Given I open google
When I enter "2+2" in search textbox
Then I should get the result as "4"
然后从我的功能文件中我使用IDE功能自动生成步骤定义(alt +输入&gt;创建步骤定义),然后我得到了一个新文件:MyStepDefs.java,我放在src / test / java /中step_definitions(只在src / test / java中没有区别),具有以下内容:
package step_definitions;
import cucumber.api.PendingException;
public class MyStepdefs {
public MyStepdefs() {
Given("^I open google$", () -> {
// Write code here that turns the phrase above into concrete actions
throw new PendingException();
});}
}
问题是,这已经显示错误。 &#34;鉴定&#34;无法识别关键字:无法解析方法&#39; Given(java.lang.String)&#39;
并且&#34;新的PendingException()&#34;我得到:不兼容的类型。必需:java.lang.Throwable。发现:cucumber.api.PendingException
这听起来很可疑,因为它是自动生成的代码所以我认为它应该没有错误(但它不是)。
所以我尝试用this教程中的内容替换这个自动生成的代码,但后来我得到了一个&#34;不适用于方法&#34; @Before,@ After,@ Given,@ When,@Then关键字错误。
package step_definitions;
import org.junit.Assert;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class googleCalcStepDefinition {
protected WebDriver driver;
@Before
public void setup() {
driver = new FirefoxDriver();
}
@Given("^I open google$")
public void I_open_google() {
//Set implicit wait of 10 seconds and launch google
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://www.google.co.in");
}
@When("^I enter \"([^\"]*)\" in search textbox$")
public void I_enter_in_search_textbox(String additionTerms) {
//Write term in google textbox
WebElement googleTextBox = driver.findElement(By.id("gbqfq"));
googleTextBox.sendKeys(additionTerms);
//Click on searchButton
WebElement searchButton = driver.findElement(By.id("gbqfb"));
searchButton.click();
}
@Then("^I should get result as \"([^\"]*)\"$")
public void I_should_get_correct_result(String expectedResult) {
//Get result from calculator
WebElement calculatorTextBox = driver.findElement(By.id("cwos"));
String result = calculatorTextBox.getText();
//Verify that result of 2+2 is 4
Assert.assertEquals(result, expectedResult);
driver.close();
}
@After
public void closeBrowser() {
driver.quit();
}
}
我错过了什么?有什么办法可以在IntelliJ IDE上设置一个使用Cucumber(Java)+ Selenium的全新项目吗?或者根本不可能?
谢谢!
答案 0 :(得分:1)
显然,我最近下载的Java JDK 9是罪魁祸首。我回到了第一个方面,用JDK 8开始了这个项目,现在一切正常。