【问题标题】:How to run all cucumber functional automated test cases in single browser如何在单个浏览器中运行所有黄瓜功能自动化测试用例
【发布时间】:2014-02-28 18:28:18
【问题描述】:

我是黄瓜测试和硒测试的新手。请帮助我在单个浏览器中运行所有黄瓜测试用例。至于现在,我正在为功能文件的每个黄瓜 step_def 创建新的 WebDriver 对象。

【问题讨论】:

  • 提供一些代码sn-p。

标签: selenium-webdriver cucumber-jvm


【解决方案1】:

解决方案是,在 step_def 中使用/传递相同的 Web Driver 对象。根据您的问题,我假设您有多个 Step Def 文件,如果故事很小且相关,则将它们全部放在一个 step_def 文件中,并具有一个 Web 驱动程序对象。如果不是这种情况,请使用在配置加载器中全局声明的预定义 Driver 对象调用每个 step_def。

【讨论】:

  • 感谢您的帮助,但您能否详细说明一下,因为我已经定义了一个帮助程序类,其中我有调用浏览器的方法,并且在所有 step_def 中我都在调用该方法来调用浏览器。那么在哪里定义该浏览器这样我就可以在所有 step_def 中关闭该浏览器。而且我不能将所有 step_def 放在一个中。
  • 那么它更简单,在你的帮助类中有一个初始化方法(或构造函数)来实例化你的驱动程序对象。然后有一个吸气剂。现在,您可以随心所欲地调用 getter。唯一的问题是,让你的 Helper 类对你的所有 step_def 都是通用的。如果您仍然需要帮助,最好展示您的课程,以便我们建议您需要修改的地方。
【解决方案2】:

为了使用一个浏览器运行所有测试用例,请使用单例设计模式,即使用私有构造函数创建类并使用私有访问说明符定义类实例变量。在该类中创建一个方法并检查该类是否为空以及是否为空为空而不是创建一个新的类实例并将该实例返回给调用方法。例如,我正在发布我的代码。

class OpenBrowserHelp {
private WebDriver driver;
private static OpenBrowserHelp browserHelp;

private OpenBrowserHelp() {
    this.driver = new FirefoxDriver()
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.manage().window().maximize();
}

public static OpenBrowserHelp getOpenBrowserHelp() {
    if (null == browserHelp) {
        browserHelp = new OpenBrowserHelp();
    }
    return browserHelp;
}

WebDriver getDriver() {
    return driver
}

void setDriver(WebDriver driver) {
    this.driver = driver
}

public void printSingleton() {
    System.out.println("Inside print Singleton");
}

现在,您需要创建浏览器实例而不是使用

 WebDriver driver = OpenBrowserHelp.getOpenBrowserHelp().getDriver();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多