Selenium WebDriver + Cucumber - 返回页面对象的方法

时间:2018-03-13 19:49:22

标签: selenium cucumber

我正在使用Selenium WebDriver + Cucumber。上次我被建议开始创建返回页面对象的方法,而不仅仅是void方法。提到的主要优点是,由于它可以在测试类开始时初始化所有页面对象,因为它可以在测试方法中完成。

我已经考虑了一段时间,我认为当我们不使用BDD测试并且整个测试场景包含在一个测试方法的主体中时,这是个好主意。但是,如果我们使用Cucumber,问题在于场景是由测试步骤构建的,这些步骤是单独的方法,并且在一个步骤中初始化的页面对象在另一个步骤中不可用。它迫使我们在很多步骤中初始化一个页面,这与我在前一段中提到的优势不符。

假设我们有以下情况:

public class Page1 {
  public Page2 method1 {
    [...]
    return new Page2(driver);
  }
}

public class Page2 {
  public Page2 method2 {
    [...]
    return this;
  }
}

public class TestClass {
  WebDriver driver = new FirefoxDriver();

  @Given("Step 1")
  public void step1() {
    Page1 p1 = new Page1(driver);
    [...]
    Page2 p2 = p1.method1;
  }

  @When("Step 2")
  public void step2() {
    p2.method2(); // Here I have a problem, as p2 is not initialised.
  }
}

如果有一些很好的方法可以使用返回页面对象的方法以及使用Cucumber创建的BDD测试吗?谢谢!

0 个答案:

没有答案