单击Geb中的操作不起作用

时间:2012-02-10 13:28:47

标签: groovy selenium webdriver geb

我是geb的新手,我有一个像这样的表单的页面

        <form id="loginfrm1" action="http://google.co.uk">
            <input id="loginsubmit1" type="submit" value="sumit me" />
        </form>

我想点击提交按钮,我正在使用

browser = new Browser()
browser.setDriver(new FirefoxDriver())
browser.go("http://localhost:8080")
browser.$("#loginsubmit1").click()

但它似乎不起作用。我哪里错了?

更新:我暂时通过将操作更改为正常的webdriver操作来实现它,就像这样

    browser.driver.findElement(By.id('loginsubmit1')).submit()

我不知道这个命令有什么问题

browser.$("#loginsubmit1").click()

1 个答案:

答案 0 :(得分:0)

$()在浏览器对象上不可用,只在页面上可用。这段代码应该有效:

browser = new Browser()
browser.setDriver(new FirefoxDriver())
browser.go("http://localhost:8080")
browser.$("#loginsubmit1").page.click()

您还应该考虑使用Browser.drive方法。对于你想要的,它看起来像这样:

Browser.drive(baseUrl: "http://localhost:8080"){
    go()
    $("#loginsubmit1").click()
}

它的工作原理是因为drive()创建了一个新的浏览器对象并委托给它和browser.page,因此可以直接调用它们所拥有的任何方法和属性。您不需要指定FirefoxDriver,因为这是默认值,但是如果您确实要指定它,则可以这样做:

Browser.drive(baseUrl: "http://localhost:8080", 
    driver: new FirefoxDriver()){ ...