Java Watir一个接一个地处理多个弹出窗口
我有一个场景,点击一个按钮,屏幕上会出现第一个弹出窗口,其中有一个ok和一个cancel按钮。单击第一个弹出窗口的ok按钮时,第二个弹出窗口显示ok和cancel按钮 这里的问题是我不能点击第二个弹出窗口的ok按钮 用于单击的代码如下所示。成功单击第一个弹出的“确定”按钮Java Watir一个接一个地处理多个弹出窗口,java,internet-explorer,popup,alert,watir,Java,Internet Explorer,Popup,Alert,Watir,我有一个场景,点击一个按钮,屏幕上会出现第一个弹出窗口,其中有一个ok和一个cancel按钮。单击第一个弹出窗口的ok按钮时,第二个弹出窗口显示ok和cancel按钮 这里的问题是我不能点击第二个弹出窗口的ok按钮 用于单击的代码如下所示。成功单击第一个弹出的“确定”按钮 browser.button(:text, "Try it").click_no_wait browser.alert.ok #here first alert ok button is clicked 如果再次使用bro
browser.button(:text, "Try it").click_no_wait
browser.alert.ok #here first alert ok button is clicked
如果再次使用
browser.alert.ok
作为第二个警报,脚本将挂起问题
问题似乎在于Watir Classic如何处理等待警报消失的情况。当您执行browser.alert.ok
时,它将单击该按钮,然后调用等待,直到\u not \u存在
:
def wait_until_not_exists
Wait.until(3) {!exists?}
@container.page_container.wait
end
此方法等待警报消失,然后浏览器完成加载
经过一些测试后,等待浏览器完成加载似乎并没有考虑显示的警报。该警报阻止Watir相信页面已加载,因此最终将超时
解决方法
最好的解决方案可能是如何更新Browser#wait方法。然而,我不确定要改变什么或其影响
另一种方法是只使用monkey补丁wait_unt_exists方法。这种方法使用较少,因此可能发生较低的风险变化。需要Watir Classic时,可以添加以下猴子补丁:
require 'watir-classic'
module Watir
class Alert
def wait_until_not_exists
Wait.until(3) {!exists?}
unless @container.page_container.alert.exists?
@container.page_container.wait
end
end
end
end
在这里,我们将wait方法更改为仅在没有其他警报存在的情况下等待页面加载
使用此修补程序,单击这两个警报的代码应该可以工作:
browser.alert.ok
browser.alert.ok
添加有关您使用的技术的标签。这项工作正在进行。感谢您的回复-Deepika