如何使用 geb 自动点击确认弹出窗口?
How to automate clicking confirmation pop-up using geb?
我正在尝试使用 Groovy、Maven、Geb 和 Spock[来自动化 Web 应用程序的 ui-测试=43=]。我有一个页面显示确认弹出窗口,在单击页面上的按钮后询问用户 "Are you sure? -Yes -No"。我可以单击页面上的按钮,还需要单击弹出窗口 window 中的 "Yes" 按钮。当我检查 Google Chrome 上的 "Yes" 按钮时,它看起来可用,因此我在页面上使用了这样的名称:
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']")}
}
}
这是我尝试点击的内容"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
我怎样才能点击那个 "Yes" 按钮,你有什么建议吗?
编辑:
我通过在单击按钮之前添加以下行来调试代码:
waitFor { yesBtn.isEnabled() }
println "isDisplayed: " + yesBtn.isDisplayed()
println "isEnabled: " + yesBtn.isEnabled()
但是无论我 waitFor 按钮是否启用或显示它总是打印:
isDisplayed: false
isEnabled: true
阅读 this post 后,我觉得 dom 需要以某种方式刷新。
由于第一次加载页面时按钮不存在,you need to inform Geb of this fact 通过传递 required: false
像这样:
yesBtn(required:false) { $("input[value*='Yes']") }
我正在尝试使用 Groovy、Maven、Geb 和 Spock[来自动化 Web 应用程序的 ui-测试=43=]。我有一个页面显示确认弹出窗口,在单击页面上的按钮后询问用户 "Are you sure? -Yes -No"。我可以单击页面上的按钮,还需要单击弹出窗口 window 中的 "Yes" 按钮。当我检查 Google Chrome 上的 "Yes" 按钮时,它看起来可用,因此我在页面上使用了这样的名称:
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']")}
}
}
这是我尝试点击的内容"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
我怎样才能点击那个 "Yes" 按钮,你有什么建议吗?
编辑:
我通过在单击按钮之前添加以下行来调试代码:
waitFor { yesBtn.isEnabled() }
println "isDisplayed: " + yesBtn.isDisplayed()
println "isEnabled: " + yesBtn.isEnabled()
但是无论我 waitFor 按钮是否启用或显示它总是打印:
isDisplayed: false
isEnabled: true
阅读 this post 后,我觉得 dom 需要以某种方式刷新。
由于第一次加载页面时按钮不存在,you need to inform Geb of this fact 通过传递 required: false
像这样:
yesBtn(required:false) { $("input[value*='Yes']") }