如何在黄瓜中使用钩子?
How to use hooks in cucumber?
我是 Cucumber 框架的新手。我正在使用带有 java 的黄瓜自动化登录场景。以下是我的功能文件 -
下面是步骤定义文件-
我想在所有场景之前执行一次 setUp()
方法(同样实现的方法),在所有场景之后执行 tearDown()
方法。我使用了黄瓜 @Before
和 @After
钩子(可能方式不正确)。
但我看到的结果与未使用这些之前相同。它为所有四种情况一一打开 4 个浏览器实例,然后执行它们。有没有办法只用一个浏览器实例执行所有这些场景(所有场景调用一次 setUp()
方法)?
@Before
public void setup() {
if (driver == null) {
...//What you have
}
driver.manage().deleteAllCookies();
}
首先不要在@After 挂钩中关闭浏览器。
你需要的是一个 webdriver,它在场景之间共享,直到所有场景 运行 才关闭。您可以通过将 webdriver 实例存储在静态变量中并向该实例添加关闭挂钩来实现。
看看这个给你这样的 driver class -- SharedWebDriver
如果您将它与 PicoContainer 等 DI 容器一起使用,您可以在构造函数中注入 driver。否则你可以创建一个实例。
您还应该查看 ScenarioOutline 以浓缩多个登录场景。
我是 Cucumber 框架的新手。我正在使用带有 java 的黄瓜自动化登录场景。以下是我的功能文件 -
下面是步骤定义文件-
我想在所有场景之前执行一次 setUp()
方法(同样实现的方法),在所有场景之后执行 tearDown()
方法。我使用了黄瓜 @Before
和 @After
钩子(可能方式不正确)。
但我看到的结果与未使用这些之前相同。它为所有四种情况一一打开 4 个浏览器实例,然后执行它们。有没有办法只用一个浏览器实例执行所有这些场景(所有场景调用一次 setUp()
方法)?
@Before
public void setup() {
if (driver == null) {
...//What you have
}
driver.manage().deleteAllCookies();
}
首先不要在@After 挂钩中关闭浏览器。
你需要的是一个 webdriver,它在场景之间共享,直到所有场景 运行 才关闭。您可以通过将 webdriver 实例存储在静态变量中并向该实例添加关闭挂钩来实现。
看看这个给你这样的 driver class -- SharedWebDriver
如果您将它与 PicoContainer 等 DI 容器一起使用,您可以在构造函数中注入 driver。否则你可以创建一个实例。
您还应该查看 ScenarioOutline 以浓缩多个登录场景。