2

我是 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()
}
}

我得到下划线的 $ 符号。这是一个错误吗?我如何解决它?

提前致谢。

4

1 回答 1

0

可能是您将页面嵌套在模块中吗?通常页面可以包含模块,但我认为相反的设计是不可能的。

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

当您拥有在许多页面中重复使用的内容时,模块很方便,这是一个如何使用模块的简单示例:

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"
}
于 2013-11-28T05:35:47.953 回答