如何使用geb自动点击确认弹出窗口?

时间:2015-07-28 13:21:27

标签: groovy spock geb ui-testing

我正在尝试使用 Groovy,Maven,Geb Spock 自动化Web应用程序的ui测试。我有一个页面显示确认弹出窗口,在点击页面上的按钮后询问用户“你确定吗? - 是 - 否”。我可以单击页面上的按钮,我还需要单击弹出窗口中的“是”按钮。当我检查Google Chrome上的“是”按钮时,它看起来可用,因此我在页面上使用了这样的名称:

MyPage.groovy

import geb.Page

class page extends Page{
    static url = "myPage"
    static at = { waitFor { title == "My Page" }}

    static content =
    {
        confirmBtn {$("input[value*='Confirm']")}
        yesBtn {$("input[value*='Yes']")}
    }
}

这就是我试图点击“是”:

MySpec.groovy

import geb.spock.GebSpec
import MyPage

    class MySpec extends GebSpec{
        def "Confirm"(){
            given:
            def page = to MyPage

            when:
            go MyPage
            page.confirmBtn.click()
            yesBtn.click()

            then:
            ...
        }
    }

结果它给了我以下例外:

org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with

如何点击“是”按钮,您有任何建议吗?

修改

我在点击按钮之前添加了以下行来调试代码:

waitFor { yesBtn.isEnabled() }
println "isDisplayed: " + yesBtn.isDisplayed()
println "isEnabled: " + yesBtn.isEnabled()

但是,无论是否 waitFor按钮启用或显示,它总是打印出来:

isDisplayed: false
isEnabled: true

在阅读this post后,我认为dom需要以某种方式刷新。

1 个答案:

答案 0 :(得分:1)

由于第一次加载页面时按钮不会出现,you need to inform Geb of this fact传递required: false,如下所示:

yesBtn(required:false) { $("input[value*='Yes']") }