【问题标题】:Is there a way to close and reopen browser when using cucumber scenario outlines and webdriver io使用黄瓜场景大纲和 webdriver io 时有没有办法关闭和重新打开浏览器
【发布时间】:2019-10-21 14:14:24
【问题描述】:
我正在使用 v5 的 web 驱动程序 io 和一个黄瓜框架。我有带有多个示例的场景大纲。我想关闭浏览器并在示例之间重新打开它,这样我就有了一个干净的网页。但我找不到办法做到这一点。我确定我已经看到了有关此的任何信息,但我找不到它。
我浏览了 webdriverio 文档,我能找到的最后一件事是从 2016 年开始,它说这是不可能的,但是有一个关于实现某些东西的讨论,但我找不到更多细节。
【问题讨论】:
标签:
cucumber
webdriver-io
【解决方案2】:
你可以使用钩子,我在下面分享一个例子。
UiHooks.java:
import cucumber.api.Scenario;
import cucumber.api.java.After;
import cucumber.api.java.Before;
public class UiHooks {
public static final String BASE_URL = "https://baseURL/";
private Scenario scenario;
@Before
public void beforeScenario(Scenario scenario) {
this.scenario = scenario;
}
@After(order = 1) //This will run first
public void afterScenario() {
if (scenario.isFailed()){
//do something like Secreen Shot or logger
}
}
@After(order = 0)//This will run second
public void afterTest() {
if (HookUtil.driver != null) {
HookUtil.driver.close();
}
if (HookUtil.seleniumBase != null) {
HookUtil.seleniumBase.stopService();
}
}
}
HookUtil.java:
public class HookUtil {
public static WebDriver driver = null;
public static SeleniumBase seleniumBase = null;
}
然后您可以在第一步中创建设置并调用:
private void Setup() {
seleniumBase = new SeleniumBase(UiHooks.BASE_URL);
driver = seleniumBase.getDriver();
HookUtil.driver = driver;
HookUtil.seleniumBase = seleniumBase;
}