使用测试1的结果启动测试2

时间:2019-11-02 14:08:22

标签: selenium cucumber

我要运行2个测试:

  1. 第1步-打开Goog​​le,第2步-输入搜索项,第3步-打印第一个条目

  2. 步骤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");
        }


    }
}
}

1 个答案:

答案 0 :(得分:0)

Afaik Cucumber不允许您这样做,因为每个方案都应“新鲜”且彼此独立。

虽然我知道您可能希望将一项测试的结果用作另一项测试的起点,但我们强烈建议您进行独立测试。 原因是,如果您的第一个测试由于任何原因而失败,则第二个测试也会自动失败(因为第一个测试没有输入)。 这将使分析故障变得更加困难和耗时,尤其是随着测试套件的增长。

相反,请考虑使用所需的URL开始第二个测试,将其打开并验证标语。

这样,两个测试都在测试不同的事物,并且由于不同的原因而失败。