Grails黄瓜和Geb - 在firefox和黄瓜方法中运行测试

时间:2015-11-16 17:30:00

标签: selenium grails groovy geb cucumber-jvm

我已将此作为黄瓜的指南以及如何使用Geb Github hauner grails-cucmber example

我不确定这是否是正确的方法,我过去使用过Geb ......

测试将从 [some name] Spec.groovy 运行,它将扩展GebReportingSpec ....使用Geb页面模型

而是通过黄瓜从StepDef运行测试......我不太确定,如何整合屏幕截图,我想你是手动完成的:/

我无法使用Firefox版本39,40,41,42在Windows 7下工作。我已经和其他人一起管理过IE!我无法在Linux下查看。最终目标是使用硒网格。两者都能够运行本地和远程。

BuildConfig.groovy

cucumber {
    features = ["test/functional/cucumber/features"]
    glue     = ["test/functional/cucumber/steps", test/functional/cucumber/hooks", "test/functional/cucumber/support"]
    tags     = ["~@ignore"]
}   

CucumberConfig.groovy

def bindingUpdater
def activeBrowser

Before { scenario ->
    activeBrowser  = new Browser()
    bindingUpdater = new BindingUpdater(binding, activeBrowser)
    bindingUpdater.initialize()
}

After { scenario ->
    bindingUpdater?.remove()
}

支持/ env.groovy

Given(~/^User goes to SomePage$/) { ->
    // Write code here that turns the phrase above into concrete actions
    to SomePage
    at SomePage
}

已编译的小黄瓜功能的示例摘录

baseNavigatorWaiting = true
atCheckWaiting       = true
reportsDir           = "target/geb-reports"

driver = {
    System.setProperty('webdriver.firefox.bin', 'C:\\Program Files (x86)\\Mozilla Firefox 41\\firefox.exe')

   //http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#using-a-proxy
   org.openqa.selenium.Proxy proxy = new org.openqa.selenium.Proxy([autodetect:true]);

    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability(CapabilityType.PROXY, proxy);

    def driverInstance = new FirefoxDriver(cap)
    driverInstance.manage().window().maximize()
    driverInstance
}

...(snipped other enviroments/functionality)

(p.s。在附注中intellij没有注意到Geb存在于此处以防万一其他人遇到此问题)

编辑 - 包含 GebConfig

PARSE_JS_KEY

1 个答案:

答案 0 :(得分:2)

Grails 2.x(据我所知)不支持在测试报告中添加屏幕截图。

我做了一个快速测试,我找到了两种获取截图的可能性。我使用插件的geb sample进行了测试:

黄瓜html报告

<强> CucumberConfig.groovy

cucumber {
    // the other settings
    plugins = ["html:target/results"]
}

添加此项将告诉黄瓜在target/results中创建一个html报告。 要在报告中添加屏幕截图,请在After挂钩中创建它,并将其添加到报告中:

<强> env.groovy

import cucumber.api.Scenario
import org.openqa.selenium.OutputType

After () { Scenario scenario ->
    def screenshot = browser.getDriver().getScreenshotAs(OutputType.BYTES)
    scenario.embed(screenshot, 'image/png')

    bindingUpdater.remove ()
}

这将创建一个包含屏幕截图的测试报告。

geb report

可以从步骤中调用browser对象:

Given(~/^User goes to SomePage$/) { ->
    to SomePage
    at SomePage
    browser.report('SomePage')
}

html / screenshot将写入target/test-reports/geb

After挂钩也会起作用:

After () { Scenario scenario ->
   browser.report(scenario.name)

   bindingUpdater.remove ()
}