在GEB+Spock+Groovy中获取错误



我是GEB+Spock的新手,正试图在我们的项目中使用它。我安装了以下内容:

GEB- geb-core-0.7.0.jar
SPOCK- Spock core-0.7 - groovy 2.0
GROOVY- Groovy1.8.9

下面是我的代码,其中包含方法。

package projectGEB
import javax.lang.model.element.VariableElement; 
import org.codehaus.groovy.ast.Variable;
import geb.*
import groovy.model.ValueHolder;
import spock.lang.*
import geb.spock.*
class GoogleSearchModule extends Module {
class Google extends Page {
    static url = "http://www.google.co.in/"
    static at = { title == "Google" }
     static content = {
        searchField { $("input[name=q]") }
        searchButton{ $("input[value=Google Search]") }
    }
    }
}

下面是调用方法*/

package projectGEB
import spock.lang.Specification
import geb.*
import grails.plugin.geb.*
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.ie.InternetExplorerDriver

class DemoClass extends Specification {
def "HelloProgram"(){
    expect:
    Browser.drive(new Browser(driver: new FirefoxDriver())) {
        to Google
        println "Hello"
    }.quit()
}
}

我收到带下划线的$符号。这是错误吗?我该如何修复它?

提前谢谢。

可能是在模块中嵌套了一个页面吗?通常页面可以包含模块,但我认为在设计上不可能出现相反的情况。

在这种情况下,您应该删除包裹页面的模块,并按原样使用页面。

当你有在许多页面中重复使用的内容片段时,模块很方便,这里有一个如何使用模块的简单例子:

class MessagesModule extends Module {
  static content = {
    errorMessage { i -> $(".errors").find("li")[i] }
    flashMessage { $(".message") }
  }
}

这个模块可以很容易地在页面对象中使用,比如:

class GroupsPage extends Page {
  static url = "group"
  static at = {
    $("h1").text() == "Groups"
    $("h2").text() == "Select a group"
  }
  static content = {
    groupEmail { $("input[name=email]") }
    createGroup { $("#createGroup") }
    searchGroup { $("#searchGroup") }
    messages { module MessagesModule }
  }
}

然后,您可以使用spock和geb:编写一个简单的测试

 def "search non-existing group"() {
   given: "I am on the groups page"
    to GroupsPage
   when: "I look for a non existing group"
    page.groupEmail = "non-existing@group.com"
    page.searchGroup.click()
   then: "I remain on that page, there is an info message"
    at GroupsPage
    page.messages.flashMessage.text() == "No group found"
}

最新更新