java - 执行多个 Cucumber 测试的模式是什么
问题描述
我正在尝试使用 Selenium 构建一套 Cucumber 测试。每个测试的第一步都登录到一个 Web 应用程序。
我正在使用 Selenium ChromeDriver,我可以看到 Cucumber 正在使用依赖注入来初始化驱动程序。每次测试完成后,我都想使用新的网络浏览器重新开始,但 Cucumber 坚持使用之前测试中使用的相同驱动程序。我已经尝试了很多事情来从一个干净的点开始。我不确定推荐的方法是什么,我认为您必须使用“Hooks”类,因为它包含在每个测试场景之前和之后运行的方法。这是我目前拥有的:
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 示例,但我发现的所有示例代码都只涉及一个测试。我没有发现任何使用一套测试的东西,目的是做类似于我上面描述的事情。
推荐的模式是什么?
解决方案
推荐阅读
- excel - 如何将独特的产品颜色映射到 8 种基本颜色?
- javascript - 减少设置超时次数
- ios - 当我尝试将 Iphone 模拟器与树莓派连接时出现两个代码错误
- sql-server - 使用 SQL Server XML 数据类型,当使用另一个属性搜索以定位 xml 节点时,如何更新 value 属性?
- javascript - 服务器端数据表分页无法正常工作
- javascript - 如何使用js删除旧的html并附加新的
- java - 如何在功能 Web 框架中使用 swagger
- python - 当必须由函数返回时,Python 解释器 3.7.1 不打印 None 值
- c++ - Eclipse CDT 中的 ZeroMQ
- sql - sql留下电子邮件直到@符号