在警报后关闭带有geb的弹出窗口

时间:2017-05-09 11:52:11

标签: selenium testing webdriver geb

我正在尝试使用Geb Testing Framework实现以下功能:

  1. 我打开了一个弹出窗口
  2. 我点击按钮
  3. 发出警报
  4. 点击“确定”后,弹出窗口将关闭。 (这是我的实际问题)
  5. 我正在使用此代码引发WindowNotFoundException:

    [checked]

    我收到了这个错误:

    // open the popup by clicking the link (javascript)
    withNewWindow({ selectLink.click() }) {
        // doing some other stuff in the opened window
    
        // closing the window by clicking a button
        // Javascript will close the window after the alert is closed
        withAlert {                    // <- The error is raised here
            $(".select").click()
        }
    }
    

    问题是我要关闭窗口。弹出窗口和父窗口之间共享一些数据,在弹出窗口中选择正确的值后,此窗口应关闭。

    我已经尝试捕获异常。但后来我需要告诉Geb使用正确的窗口(仍然打开的父窗口)。

    有什么想法吗?

2 个答案:

答案 0 :(得分:1)

默认情况下,Geb会在执行该方法时通过withNewWindow()调用关闭打开的窗口。你可以要求它不要使用close option

这样做
withNewWindow({ selectLink.click() }, close: false) {
    ...
}

答案 1 :(得分:0)

因此,如果我读得正确,则单击警报上的“确定”,然后就会出现错误。

听起来像Geb不知道它在哪个页面上,你需要用waitFor包装你的代码:

waitFor {
        withWindow({ isAt MyPage}) { true }
    }