我尝试使用Grails 1.3.7、Geb、Spock和Selenium运行功能测试。下面是我的buildconfig.groovy文件:
def seleniumVersion = "2.21.0"
grails.project.dependency.resolution = {
// inherit Grails' default dependencies
inherits("global")
log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
test("org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion")
test("org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion")
test "org.codehaus.geb:geb-spock:0.6.0"
}
plugins {
test(":spock:0.5-groovy-1.7")
}
测试代码如下所示:
package pages
import geb.Page
class LoginPage extends Page
{
static url = 'login'
static at = { title.endsWith("Login")}
}
import geb.spock.GebReportingSpec
import spock.lang.*
import pages.*
@Stepwise
class GeneralSpec extends GebReportingSpec
{
def "I can access the login page"()
{
when: "I open the login page"
to LoginPage
then: "I'll be at the login page"
at LoginPage
}
}
org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
at org.openqa.selenium.remote.internal.HttpClientFactory.getClientConnectionManager(HttpClientFactory.java:59)
at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:48)
at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:111)
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:78)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:200)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:94)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:85)
at geb.driver.NameBasedDriverFactory.getDriver(NameBasedDriverFactory.groovy:42)
at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:36)
at geb.Configuration.createDriver(Configuration.groovy:210)
at geb.Configuration.getDriver(Configuration.groovy:199)
at geb.Browser.getDriver(Browser.groovy:100)
at geb.Browser.go(Browser.groovy:300)
at geb.Page.to(Page.groovy:157)
at geb.Browser.to(Browser.groovy:333)
at geb.Browser.to(Browser.groovy:323)
at geb.Browser.to(Browser.groovy:313)
at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51)
at GeneralSpec.I can access the login page(GeneralSpec.groovy:12)
org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
at org.openqa.selenium.remote.internal.HttpClientFactory.getClientConnectionManager(HttpClientFactory.java:59)
at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:48)
at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:111)
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:78)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:200)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:94)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:85)
at geb.driver.NameBasedDriverFactory.getDriver(NameBasedDriverFactory.groovy:42)
at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:36)
at geb.Configuration.createDriver(Configuration.groovy:210)
at geb.Configuration.getDriver(Configuration.groovy:199)
at geb.Browser.getDriver(Browser.groovy:100)
at geb.report.PageSourceReporter.getPageSource(PageSourceReporter.groovy:39)
at geb.report.PageSourceReporter.writePageSource(PageSourceReporter.groovy:35)
at geb.report.PageSourceReporter.writeReport(PageSourceReporter.groovy:27)
at geb.report.ScreenshotAndPageSourceReporter.writeReport(ScreenshotAndPageSourceReporter.groovy:31)
at geb.Browser.report(Browser.groovy:453)
at geb.spock.GebReportingSpec.report(GebReportingSpec.groovy:43)
at geb.spock.GebReportingSpec.cleanup(GebReportingSpec.groovy:39)
这可能是由于包含的http-client版本不正确造成的。对我来说,这是由Grails发布插件引入的。如果它来自插件,可以在buildconfig中禁用它:
plguins {
build ":release:$grailsVersion" {
excludes = 'http-client'
}
}
我配置了一些测试,根据web应用程序中的登录尝试检查不同的消息。因为消息和输入字段将在第三次登录尝试时更改。 登录是基于向特定电话号码发送密码的两步登录,因此在第一页LoginPage中,用户介绍他们的Id和电话号码,然后将其重定向到第二页ValidationLoginPage,用户在其中介绍接收到的密码。 我想检查一下,在第二个页面中,用户只能引入三个错误的密码,在第四次尝试时,引入密码的输入将
我似乎无法从命令提示符运行功能测试。有趣的是,它与Intellij的工作很好... 更新: 我将grails更新到2.2.3,geb更新到0.9.2,现在命令提示符中的完整堆栈跟踪如下所示(在Intellij中仍然很好):
我正在尝试使用Spock运行geb测试。我已经在groovy脚本中编写了所有内容,该脚本位于中,如下所示
我正在用Geb(0.12.2)和Spock定义一些规范来测试我的前端。我的应用程序的登录系统依赖于我们内部IDP的SSO。一旦我进入我的应用程序的私人部分,如果以前没有在我们的IDP中登录,它将重定向到IDP主页,然后登录并重定向到您最初询问的私人URL。 注销。 删除IDP设置的cookie。 我希望初始化每一个GebSpec类,而不需要任何以前的cookie或以前GebSpec执行中的状态,并
我刚开始使用geb和spock,但是当我只有代码的视图源时,我试图验证网页上显示的图像。任何建议都很感激!我根据以前编写的链接测试建模了这段代码,所以我肯定我遗漏了一些东西。我的页面文件的一个示例是: 我的规范页面的一个示例是:
免责声明:在我来这里问这个问题之前,我已经通过了这么多不同的来源。我用maven引用了geb的GitHub项目、geb的book和许多YouTube教程,等等。 我只是试图让一个项目启动和运行,做一个非常简单的自动化搜索引擎测试,只是为了让我可以玩工具。 这是我在测试中得到的例外。我运行了一个非常简单的assert Hello World测试,该测试已经通过,为了清晰起见,我删除了该测试: gro