我继承了一些测试登录到站点的GEB测试(以及各种错误案例/验证警告)。
测试运行一些验证失败,然后尝试重新导航到同一页面(只是刷新页面/ dom)并尝试有效登录。使用GEB的to()方法,它会检测到您正在尝试导航到您所在的页面,它只是调用刷新 - 这里的问题是尝试刷新上一个POST请求,并且驱动程序显示< / p>
&#34; 要显示此页面,Firefox必须发送重复之前执行的任何操作(例如搜索或订单确认)的信息&#34;
消息 - 由于测试不期望这个弹出窗口,它会挂起并且测试会超时。
有没有办法在Firefox webdriver中关闭这些警告?或通过Selenium或GEB自动忽略/接受它们?
GEB版本:0.9.2, Selenium版本:2.39.0
(也尝试使用上面的次要版本:0.9.3&amp; 2.40.0)
注意事项:
答案 0 :(得分:3)
那个refresh()
可以解决IE驱动程序的问题,它忽略了对driver.get()
的调用,并且使用与当前URL相同的URL。
而不是猴子修补浏览器类(可能会在某处或某些地方咬你)我会更改登录页面类的URL。例如,您可以添加一个无关紧要的查询字符串 - 我认为最后只需?
就足够了。 driver.currentUrl == newUrl
条件将评估为false,您将不再看到该弹出窗口。
答案 1 :(得分:2)
如果我理解你的问题,这可能会有所帮助。在Groovy中,您可以动态修改类。
我们将Spock与Geb一起使用,并将其放置在所有Spock Spec继承的Super类中。例如:QSpec扩展了GebSpec。
这是原始方法略有修改,原始代码已注释掉,因此您知道已更改的内容。我在几个需要的地方使用这种技术来改变Geb的行为。
static {
Browser.metaClass.go = { Map params, String url ->
def newUrl = calculateUri(url, params)
// if (driver.currentUrl == newUrl) {
// driver.navigate().refresh()
// } else {
// driver.get(newUrl)
// }
driver.get(newUrl)
if (!page) {
page(Page)
}
}
}