Использование результатов теста 1 для запуска теста 2 - PullRequest
0 голосов
/ 02 ноября 2019

Я хочу запустить 2 теста:

  1. Шаг 1 - открыть Google, Шаг 2 - ввести элемент поиска, Шаг 3 - распечатать первую запись

  2. Шаг 1 - URL-адрес пользователя из шага 3 в тесте 1, Шаг 2 - щелкните по URL, Шаг 3 - проверьте строку тега

Я не могу понять, как использоватьURL из теста 1, чтобы начать мой второй тест

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 голосов
/ 05 ноября 2019

Afaik Cucumber не позволит вам сделать это, так как каждый сценарий должен начинаться с нуля и быть независимым от других.

Хотя я понимаю, что вы можете использовать результат одного теста в качестве исходногоочко для другого, мы настоятельно рекомендуем провести независимые тесты. Причина в том, что если ваш первый тест по какой-либо причине потерпит неудачу, ваш второй тест также автоматически провалится (так как в первом тесте нет ввода). Это усложнит и отнимает больше времени для анализа сбоев, особенно по мере роста вашего набора тестов.

Вместо этого рассмотрите возможность начать второй тест с ожидаемого URL-адреса, открыть его и проверить слоган.

Таким образом, оба теста тестируют разные вещи и не пройдут по разным причинам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...