我要运行2个测试:
第1步-打开Google,第2步-输入搜索项,第3步-打印第一个条目
步骤1-测试1中步骤3的用户URL,步骤2-单击url,步骤3-验证标记行
我无法弄清楚如何使用测试1中的URL来启动第二个测试
package test;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
import cucumber.annotation.en.And;
import gherkin.formatter.model.Scenario;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import static org.junit.Assert.*;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.TimeUnit;
//import org.openqa.selenium.support.ui.ExpectedCondition;
//import org.openqa.selenium.support.ui.WebDriverWait;
public class MyTest {
private WebDriver driver;
private Object ExpectedConditions;
private Object MyTestHomePage;
@Given("I have a opened google in a web browser")
public void MyTest() {
System.setProperty("webdriver.gecko.driver", "Driver/geckodriver.exe");
driver = new FirefoxDriver();
driver.get("https://www.google.co.uk/");
}
@When("I enter MyTest in search box")
public void TruNarrative_search() {
WebElement searchButton = driver.findElement(By.name("q"));
searchButton.sendKeys("mysearchitem");
searchButton.sendKeys(Keys.RETURN);
}
@Then("I can identify MyTest as first entry")
public void MyTest_result() {
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
List<WebElement> findElements = driver.findElements(By.cssSelector("MycssSelector"));
for (WebElement webElement : findElements) {
System.out.println(webElement.getAttribute("href"));
}
}
public class MyTest2 {
@Given("I have found the MyTest webpage via google")
public void TMyTest_found() {
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.findElement(By.cssSelector("MycssSelector"));
}
@When("I click on the link")
public void MyTest_click() {
driver.findElement(By.cssSelector("mycssSelector")).click();
}
@Then("I can identify the strap line “Blah Blah Blah.” Is found on the page")
public void TruNarrative_tag() {
WebElement tagLine = driver.findElement(By.cssSelector("h4.bigger[text()='Blah Blah Blah.']"));
if (tagLine.isDisplayed()) {
System.out.println("Element found");
} else {
System.out.println("Element not found");
}
}
}
}
答案 0 :(得分:0)
Afaik Cucumber不允许您这样做,因为每个方案都应“新鲜”且彼此独立。
虽然我知道您可能希望将一项测试的结果用作另一项测试的起点,但我们强烈建议您进行独立测试。 原因是,如果您的第一个测试由于任何原因而失败,则第二个测试也会自动失败(因为第一个测试没有输入)。 这将使分析故障变得更加困难和耗时,尤其是随着测试套件的增长。
相反,请考虑使用所需的URL开始第二个测试,将其打开并验证标语。
这样,两个测试都在测试不同的事物,并且由于不同的原因而失败。