【发布时间】:2014-02-28 18:28:18
【问题描述】:
我是黄瓜测试和硒测试的新手。请帮助我在单个浏览器中运行所有黄瓜测试用例。至于现在,我正在为功能文件的每个黄瓜 step_def 创建新的 WebDriver 对象。
【问题讨论】:
-
提供一些代码sn-p。
标签: selenium-webdriver cucumber-jvm
我是黄瓜测试和硒测试的新手。请帮助我在单个浏览器中运行所有黄瓜测试用例。至于现在,我正在为功能文件的每个黄瓜 step_def 创建新的 WebDriver 对象。
【问题讨论】:
标签: selenium-webdriver cucumber-jvm
解决方案是,在 step_def 中使用/传递相同的 Web Driver 对象。根据您的问题,我假设您有多个 Step Def 文件,如果故事很小且相关,则将它们全部放在一个 step_def 文件中,并具有一个 Web 驱动程序对象。如果不是这种情况,请使用在配置加载器中全局声明的预定义 Driver 对象调用每个 step_def。
【讨论】:
为了使用一个浏览器运行所有测试用例,请使用单例设计模式,即使用私有构造函数创建类并使用私有访问说明符定义类实例变量。在该类中创建一个方法并检查该类是否为空以及是否为空为空而不是创建一个新的类实例并将该实例返回给调用方法。例如,我正在发布我的代码。
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();
【讨论】: