如何在黄瓜中使用钩子?

时间:2016-11-21 12:45:53

标签: cucumber cucumber-junit cucumber-java

我是黄瓜框架的新手。我使用带有黄瓜的java自动登录方案。以下是我的专题文件 -

enter image description here

以下是步骤定义文件 -

enter image description here

我想在所有场景之前执行setUp()方法(在相同的场景下实现方法)和tearDown()方法之后执行@Before方法。我使用了黄瓜@AftersetUp()挂钩(可能没有正确的方法)。

但我看到的结果与之前没有使用过的相同。它为所有四个场景逐个打开4个浏览器实例,然后执行它们。有没有办法只使用一个浏览器实例执行所有这些场景(对所有场景调用<!DOCTYPE html> <html lang="en"> <head> <title>AJAX Contact Form Demo</title> <link rel="stylesheet" href="style.css"> </head> <body> <div id="page-wrapper"> <h1>AJAX Contact Form Demo</h1> <div id="form-messages"></div> <form id="main-contact-form" method="post" action="mailer.php"> <div class="field"> <label for="name">Name:</label> <input type="text" class="form-control" id="name" name="name" required> </div> <div class="field"> <label for="email">Email:</label> <input type="email" class="form-control" id="email" name="email" required> </div> <div class="field"> <label for="message">Message:</label> <textarea id="message" class="form-control" name="message" required></textarea> </div> <div class="field"> <button type="submit" name="submit">Send</button> </div> </form> </div> <script src="jquery-2.1.0.min.js"></script> <script type="text/javascript" src="pap.js"></script> </body> </html> 方法一次)?

2 个答案:

答案 0 :(得分:1)

@Before
public void setup() {
    if (driver == null) {
       ...//What you have
    }
    driver.manage().deleteAllCookies();
}

要开始不要在@After挂钩中关闭浏览器。

答案 1 :(得分:0)

您需要的是一个在场景之间共享的webdriver,并且在所有场景运行之前不会关闭。您可以通过将webdriver实例存储在静态变量中并向实例添加关闭挂钩来完成此操作。

看看这个给你这样一个驱动程序类 - SharedWebDriver

如果将它与DI容器(如PicoContainer)一起使用,则可以在构造函数中注入驱动程序。否则你可以创建一个实例。

此外,您应该查看ScenarioOutline以压缩多个登录方案。