Geb EmptyNavigator 不存在

Geb EmptyNavigator is not present

这里使用 Geb 0.13.1。我还没有尝试将它与任何类型的测试框架集成(目前),只是想感受一下它的 DSL。我只是想让 Geb 启动一个 Firefox 浏览器,将它指向 Google 的主页,然后在搜索地址中输入 'gmail'(HTML <input/>,id 为 'q'):

class GoogleHomepage extends Page {
    static url = 'http://google.com'

    static at = {
        title == 'Google'
    }

    static content = {
        search {
            $('input#q')
        }
    }
}

class MyGebDriver {
    static void main(String[] args) {
        FirefoxDriver firefoxDriver = new FirefoxDriver()
        Browser browser = new Browser(driver: firefoxDriver)

        Browser.drive(browser) {
            to(GoogleHomepage)

            search.value('gmail')

            quit()
        }
    }
}

当我 运行 这个时,Firefox 打开并转到 Google,但在找到搜索('q' 元素)栏以设置一个值时似乎窒息:

Exception in thread "main" geb.error.RequiredPageContentNotPresent: The required page
    content 'sandbox.geb.GoogleHomepage -> search: geb.navigator.EmptyNavigator' is not
    present

关于这里发生的事情有什么想法吗?

我觉得你的 GoogleHomepage 有点傻。 如果你让它看起来更像这样更好地遵循 geb dsl 会怎么样。

class GoogleHomepage extends Page {

    url = 'http://google.com'

    static at = {
        waitFor() {
            title == 'Google'
            content
        }
    }

   static content = {
       search(required: true) { $('input#lst-ib') }
   }
}

您得到一个 EmptyNavigator 是因为您正在寻找 ID 为 q $('input#q') 的输入,请尝试 $('input[name=q]')。