我已将此用作 cucumber 的指南以及如何使用 Geb Github hauner grails-cucmber example
我不确定这是否是正确的方法,我过去使用过 Geb ......
测试将从 [此处的某个名称]Spec.groovy 运行,该 Spec.groovy 将扩展 GebReportingSpec.... 使用 Geb 页面模型
相反,测试是通过 cucumber 从 StepDef 运行的......我不太确定,如何集成屏幕截图,我想你要手动进行:/
我无法在 Windows 7 下使用 Firefox 版本 39、40、41、42 进行此操作。我甚至与其他人一起管理过 IE!我无法在Linux下进行检查。最终目标是使用 Selenium 网格。两者都能够在本地和远程运行。
BuildConfig.groovy
def gebVersion = "0.12.2"
def seleniumVersion = "2.48.2" //2.45.0
def cucumberVersion = "1.2.0"
repositories {
... (snippet)
mavenRepo "http://oss.sonatype.org/content/repositories/snapshots" //Geb snapshot
}
dependencies {
test "org.grails:grails-datastore-test-support:1.0.2-grails-2.4"
// Geb / Spock // http://www.gebish.org/manual/current/#grails
test "org.gebish:geb-spock:$gebVersion"
test "org.seleniumhq.selenium:selenium-support:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-ie-driver:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion" //Needed by phantomjsdriver
test "org.spockframework:spock-grails-support:0.7-groovy-2.0"
test("com.codeborne:phantomjsdriver:1.2.1") {
transitive = false // phantomjs driver pulls in a different selenium version
}
}
plugins {
test ":geb:$gebVersion"
test ":cucumber:$cucumberVersion
}
CucumberConfig.groovy
cucumber {
features = ["test/functional/cucumber/features"]
glue = ["test/functional/cucumber/steps", test/functional/cucumber/hooks", "test/functional/cucumber/support"]
tags = ["~@ignore"]
}
支持/env.groovy
def bindingUpdater
def activeBrowser
Before { scenario ->
activeBrowser = new Browser()
bindingUpdater = new BindingUpdater(binding, activeBrowser)
bindingUpdater.initialize()
}
After { scenario ->
bindingUpdater?.remove()
}
已编译 Gherkin 功能的示例片段
Given(~/^User goes to SomePage$/) { ->
// Write code here that turns the phrase above into concrete actions
to SomePage
at SomePage
}
(附注 intellij 并没有发现 Geb 存在于此的事实,以防其他人遇到此问题)
编辑 - 包括配置
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)
最佳答案
Grails 2.x(据我所知)不支持在测试报告中添加屏幕截图。
我做了一个快速测试,发现了两种获取屏幕截图的可能性。我用 geb sample 测试了两者插件的:
cucumber html报告
CucumberConfig.groovy
cucumber {
// the other settings
plugins = ["html:target/results"]
}
添加它会告诉 cucumber 在
target/results
中创建一个 html 报告。 .要将屏幕截图添加到您在
After
中创建的报告中钩子(Hook)并将其添加到报告中: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 ()
}
这将创建一个包含屏幕截图的测试报告。
报告
可以调用
browser
一个步骤的对象:Given(~/^User goes to SomePage$/) { ->
to SomePage
at SomePage
browser.report('SomePage')
}
html/屏幕截图将被写入
target/test-reports/geb
.After
钩子(Hook)也可以:After () { Scenario scenario ->
browser.report(scenario.name)
bindingUpdater.remove ()
}
关于selenium - Grails cucumber 和 Geb - 在 firefox 和 cucumber 方法中运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33741228/