我是黄瓜的新手,并仔细学习了这个文档,以了解我如何实现我的第一个黄瓜java项目。我已经做了很多分析,并且经历了几乎所有与互联网相关的文章,为什么它没有采取步骤定义但却找不到原因。但是,根据我的理解,一切似乎都没问题,我非常期待你们能够一次性找到我的错。
期待+ +响应。
因此,我正在共享代码,消息(在控制台窗口上)和文件夹结构。
由于 拉菲
功能文件:
@MyApplication
Feature: Post text Hello Rafi on Rafi facebook account
Scenario: Login successfully on Facebook application
Given Open Facebook application
When Enter valid id and password
And Click on Login button
Then Facebook home page should open
TestRunner类:
package test.java.runner;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
//glue = {"helpers", "src.test.java.steps"},
@RunWith(Cucumber.class)
@CucumberOptions(
features = {"src/features"},
glue = {"helpers", "src.test.java.steps"},
plugin = {"pretty","html:target/cucumber-html-report"},
dryRun = true,
monochrome = true,
tags="@MyApplication",
strict=false)
public class TestRunner {
}
StepDefinition类:
package test.java.steps;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import cucumber.api.PendingException;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class StepDefinition {
private static WebDriver driver = null ;
private static String password = "*********";
WebDriverWait wait=new WebDriverWait(driver, 30);
WebElement waitElement;
@BeforeClass
public void setup() throws Throwable
{
System.setProperty("webdriver.gecko.driver", "C:\\Selenium Automation\\selenium\\Selenium 3 and Firefox Geckodriver\\geckodriver.exe");
driver = new FirefoxDriver ();
driver.manage().window().maximize();
}
@AfterClass
public void teardown() throws Throwable
{driver.quit();}
// First scenario
@Given("^Open Facebook application$")
public void open_Facebook_application() throws Throwable{
System.out.println("this is not working");
driver.navigate().to("https://www.facebook.com/");
}
@When("^Enter valid id and password$")
public void enter_valid_id_and_password() throws Throwable{
driver.findElement(By.name("email")).clear();
driver.findElement(By.name("email")).sendKeys("rafiras16@gmail.com");
driver.findElement(By.name("pass")).clear();
driver.findElement(By.name("pass")).sendKeys(password);
}
@When("^Click on Login button$")
public void click_on_Login_button() throws Throwable {
driver.findElement(By.xpath("//input[starts-with(@id,'u_0')]")).click();
}
@Then("^Facebook home page should open$")
public void facebook_home_page_should_open() throws Throwable{
String strTitle = driver.getTitle();
System.out.print(strTitle);
}
}
image for message on console window and folder structure BuildPath details
答案 0 :(得分:0)
我认为CucumberOptions类的glue属性是错误的。如果要使用文件路径引用步骤定义,则需要将其更改为:
glue = {"helpers", "src/test/java/steps"},
如果你想通过包引用它们,那么你需要删除" src。"前缀:
glue = {"helpers", "test.java.steps"},
答案 1 :(得分:0)
尝试更改,
glue = {"helpers", "src.test.java.steps"}
到
glue = {"test.java.steps"}
这个帮助程序包是什么,我没有在屏幕截图中看到它。
答案 2 :(得分:0)
仅当类是junit测试类时,@AfterClass
和@BeforeClass
注释才有用。您已将它们放在普通类中,因此它们不会被运行。这导致驾驶员保持原状。
简单的方法是使用黄瓜@Before and @After
注释。更改@BeforeClass to @Before and @AfterClass to @After
。