我正在尝试使用Selenium构建一套Cucumber测试。每个测试的第一步都登录到Web应用程序。
我正在使用Selenium ChromeDriver,我可以看到Cucumber正在使用依赖注入来初始化驱动程序。每次测试完成后,我想重新开始使用新的Web浏览器,但Cucumber坚持使用上一次测试中使用的相同驱动程序。我从一个干净的角度尝试了许多事情。我不确定推荐的做法是什么,我认为你必须使用' Hooks' class,因为它包含在每个测试场景之前和之后运行的方法。这就是我目前所拥有的:
public class Hooks {
private final WebDriver driver;
@Inject
public Hooks(final WebDriver driver) {
this.driver = driver;
}
@Before
public void openWebSite() {
}
@After
public void closeSession() {
driver.close();
}
}
正如您所看到的,我在driver.close()
方法中添加了@After
语句,但我没有看到重新打开或重新创建新会话的方法,而且我还没有。在下一个测试尝试登录时收到以下异常:
Message: org.openqa.selenium.NoSuchSessionException: no such session
大概是因为它不喜欢我刚刚拨打close()
的事实。
但实际上,我想告诉Cucumber我想要一个全新的驱动程序用于每个测试场景。
我已经搜索过Cucumber示例,但我发现的所有示例代码都只涉及一次测试。我没有找到任何使用一套测试的东西,目的是做一些类似于我上面描述的事情。
推荐的模式是什么?