黄瓜,最大的挑战,浏览器调用

时间:2018-06-20 02:34:47

标签: cucumber

在我的框架中,将每个功能文件转换为步骤def时,我都必须放置浏览器调用代码(SetProperties),并且对于每个操作,都会出现新的窗口。请帮助我解决我尝试固有性的问题,在该问题中我放置了代码并扩展到step def类不起作用。我想打开一个浏览器,它将对每个功能文件进行操作。

例如:我有一个用于登录内容验证的功能文件,另一个用于登录后的功能文件。

我再次在登录名中输入了用户名和密码,登录后我不得不在其他功能文件中输入了用户名和密码以及浏览器调用代码。

1 个答案:

答案 0 :(得分:0)

如果您仍在寻找答案。我建议在每个步骤定义文件或页面对象类内部(如果使用的是POM)初始化浏览器。创建一个类,例如:TestContext.java在该类中初始化Webdriver。

公共类TestContext {

private WebDriverLibrary webDriverLibrary;
private PageObjectLibrary pageObjectLibrary;

public TestContext() {
    webDriverLibrary = new WebDriverLibrary();
    pageObjectLibrary = new PageObjectLibrary(webDriverLibrary.getDriver());
}

// return WebDriverLibrary object
public WebDriverLibrary getWebDriverLibrary() {
    return webDriverLibrary;
}

// return PageObjectLibrary object
public PageObjectLibrary getPageObjectLibrary() {
    return pageObjectLibrary;
}

}

公共类WebDriverLibrary {

private static WebDriver driver;
private static DriverType driverType;
private static EnvironmentType environmentType;

public WebDriverLibrary() {

    driverType = FileReaderLibrary.getInstance().getConfigReader().getBrowser();
    environmentType = FileReaderLibrary.getInstance().getConfigReader().getEnvironment();
}

// return webdriver instance
public WebDriver getDriver() {
    if (driver == null)
        driver = createDriver();
    return driver;
}

private WebDriver createDriver() {

    switch (environmentType) {
    case LOCAL:
        driver = createLocalDriver();
        break;
    case REMOTE:
        driver = createRemoteDriver();
        break;
    }
    return driver;

}

}

希望这对您有所帮助。