我开始编写示例黄瓜测试代码,并且遇到步骤定义文件未运行的问题。甚至我的自动浏览器也无法启动。 这是我的项目层次结构屏幕快照:https://prnt.sc/psasmt
下面是我的5个文件:
Feature: Apple Airpods
Scenario Outline: Apple Airpods scenario tests
Given user is already on apple website
Then direct to ipad
When title is iPad - Apple
Then direct to ipad air
Then search for airpods by keyword
When title is Airpods - Apple
Then print welcome to the airpods official webpage
StepDefinition文件
package stepDefinitions;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class AppleStepDefinitions {
WebDriver driver;
@Given("^user is already on apple website$")
public void user_is_already_on_apple_website()
{
System.out.println("Opening the web app");
System.setProperty("webdriver.chrome.driver","C:\\Users\\Lenovo-
I7\\Desktop\\chromedriver.exe");
System.out.println("making connection to driver");
driver = new ChromeDriver();
driver.get("https://www.apple.com/");
}
@Then("^direct to ipad$")
public void direct_to_ipad()
{
WebElement ipad = driver.findElement(By.xpath("//*[@id=\'ac-
globalnav\']/div/ul[2]/li[3]"));
ipad.click();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
}
@When("^title is iPad - Apple$")
public void title_is_iPad_Apple()
{
String title = driver.getTitle();
System.out.println("iPad Page title ::"+ title);
Assert.assertEquals("iPad - Apple",title);
}
@Then("^direct to ipad air$")
public void direct_to_ipad_air()
{
WebElement ipadAir=
driver.findElement(By.cssSelector("#chapternav > div > ul >
li.chapternav-item.chapternav-item-ipad-air > a"));
ipadAir.click();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
}
@Then("^search for airpods by keyword$")
public void search_for_airpods_by_keyword()
{
WebElement search = driver.findElement(By.id("ac-gn-link-
search"));
search.click();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.findElement(By.id("ac-gn-searchform-
input")).sendKeys("airpods");
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.findElement(By.xpath("//*
[@id=\"quicklinks\"]/li[1]/a")).click();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
}
@When("^title is Airpods - Apple$")
public void title_is_Airpods_Apple()
{
String title = driver.getTitle();
System.out.println("Airpods Page title ::"+ title);
Assert.assertEquals("Airpods - Apple",title);
}
@Then("^print welcome to the airpodsofficial webpage$")
public void print_message()
{
System.out.println("Welcome to airpod official web page");
driver.quit();
}
}
Runner.java
package testRunner;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Beforeclass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import cucumber.api.CucumberOptions;
import cucumber.api.testng.CucumberFeatureWrapper;
import cucumber.api.testng.TestNGCucumberRunner;
@CucumberOptions(
features = "src/test/java/FeatureFile",glue = {"stepDefinitions"},tags = {"~@Ignore"},format = {
"pretty","html:target/cucumber-reports/cucumber-pretty","json:target/cucumber-reports/CucumberTestReport.json","rerun:target/cucumber-reports/rerun.txt"
},plugin = "json:target/cucumber-reports/CucumberTestReport.json")
public class Runner {
private TestNGCucumberRunner testNGCucumberRunner;
@Beforeclass
public void setUp() throws Exception
{
testNGCucumberRunner = new TestNGCucumberRunner(this.getclass());
}
@Test(groups = "cucumber",description="Runs Apple Feature",dataProvider="features")
public void my_test(CucumberFeatureWrapper cucumberFeature)
{
testNGCucumberRunner.runCucumber(cucumberFeature.getcucumberFeature());
}
@DataProvider
public Object[][] features()
{
return testNGCucumberRunner.provideFeatures();
}
@AfterClass
public void tearDown()
{
testNGCucumberRunner.finish();
}
}
TestNG.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestNG-Cucumber Suite" parallel="tests" thread-count="10">
<test name="Apple test">
<classes>
<class name="testRunner.Runner" />
</classes>
</test>
</suite>
这是我在控制台上得到的输出。
[RemoteTestNG] detected TestNG version 6.14.3
Feature: Apple Airpods
Scenario Outline: Apple Airpods scenario tests [90m# apple_feature.feature:3[0m
[36mGiven [0m[36muser is already on apple website[0m
[36mThen [0m[36mdirect to ipad[0m
[36mWhen [0m[36mtitle is iPad - Apple[0m
[36mThen [0m[36mdirect to ipad air[0m
[36mThen [0m[36msearch for airpods by keyword[0m
[36mWhen [0m[36mtitle is Airpods - Apple[0m
[36mThen [0m[36mprint welcome to the airpods official webpage[0m
0 Scenarios
0 Steps
0m0.000s
===============================================
TestNG-Cucumber Suite
Total tests run: 1,Failures: 0,Skips: 0
===============================================