Geb EmptyNavigator不存在

时间:2016-05-20 14:30:19

标签: selenium-webdriver groovy geb

在这里使用Geb 0.13.1。我并没有尝试将它与任何类型的测试框架集成(只是),只是试图了解它的DSL。我只是想让Geb推出一个Firefox浏览器,将其指向Google的主页,然后输入“gmail&#39;在搜索地址(ID为<input/>且ID为&{39; q&#39;):

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,但在找到搜索(&#39; q&#39;元素)栏以设置值时,似乎会窒息:

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

关于这里发生了什么的任何想法?

2 个答案:

答案 0 :(得分:2)

您正在获取EmptyNavigator,因为您正在寻找ID为q $的输入(&#39;输入#q&#39;)尝试$(&#39;输入[name = q]&#39;)而不是。

答案 1 :(得分:1)

您的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') }
   }
}