我在这里有一个独特的情况。我在表单上有一个按钮,如果表单中有一些错误,会生成一个弹出窗口。 [我知道这不是一个好的做法,但产品的开发人员不会改变这种行为!]如果正确填充了所有必填字段,表单将导航到另一个页面。现在,我需要编写一个脚本,以便单击表单上的“提交”按钮,该按钮可能会生成弹出窗口或导航到下一页。
我在“提交”按钮上使用了click_no_wait,并按照Javascript Popups in Watir使用AutoIt处理了弹出窗口。现在,如果所有信息都有效并且表单导航到下一页,我会通过遵循How to wait with Watir中描述的一些技术在脚本中使用延迟。我正在使用Watir :: wait_until()在脚本中等待。
现在,有时由于某些网络问题,在提交表单时转到下一页(报告生成)页面需要花费时间,因此脚本因wait_until中指定的超时值而失败。
我想知道是否有办法拦截Watir中HTML页面的onload事件,因为在加载整个页面之前不会触发onload事件。通过这种方式,我可以准确估计超时值,而不是试验它。因此,我的脚本将通过100%,而不是现在98%。
感谢您对此主题的任何帮助。
答案 0 :(得分:1)
您可以尝试设置超时的救援,然后如果遇到超时则循环合理的次数(2或3?)。
E.g。
# All your button clicking and autoit stuff here
i = 0
begin
b.wait_until{ # the thing you're waiting to happen }
rescue TheSpecificTimeOutException
# Sorry I can't remember it, the command prompt will tell you exactly
# which one
if i < 3
i += 1
retry
else
raise
end
end
我确信我会在上面搞砸了一些东西,或者会有更简洁的方法来做,但你明白了。当它超时时,在放弃之前再试几次。