如何处理浏览器 javascript 使用 ruby watir 脚本确认导航警报
How to handle browser javascript confirm navigation alert with ruby watir script
我想以编程方式处理 javascript 确认提醒,询问您是否要离开页面(请参见下面的屏幕截图)。
到目前为止我试过的方法都没有用。
浏览器没有识别出我要离开页面的返回值 true。
这是我试图处理此警报的部分:
if @b.div(:class, "infoMessageBox error").present?
puts "There was an error"
#@b.execute_script("window.confirm = function() {return true}")
@b.execute_script("window.onbeforeunload = function() {};")
@b.goto("#{@env}/TranslateFile.aspx")
break
end
我也看过这篇文章:“Dismiss "Confirm Navigation" popup with Watir”但是这篇文章中的方法对我的情况没有帮助。
我很想得到一些帮助,因为我被困在这里了。
这有助于解决我的问题。
我改进了代码,现在它运行得更好了,但将来可能会出现其他问题(希望不会)。
@b.refresh
if @b.alert.exists?
@b.alert.text
@b.alert.ok
end
@b.goto("#{@env}/TranslateFile.aspx")
这对我很有帮助,现在它摆脱了警报并继续工作流程。感谢帮助 ! :)
为可能无法处理警报的其他人提供更多信息(link 位于下方):
# Check if alert is shown
browser.alert.exists?
# Get text of alert
browser.alert.text
# Close alert
browser.alert.ok
browser.alert.close
JAVASCRIPT CONFIRMS
# Accept confirm
browser.alert.ok
# Cancel confirm
browser.alert.close
JAVASCRIPT PROMPT
# Enter text to prompt
browser.alert.set "Prompt answer"
# Accept prompt
browser.alert.ok
# Cancel prompt
browser.alert.close
# don't return anything for alert
browser.execute_script("window.alert = function() {}")
# return some string for prompt to simulate user entering it
browser.execute_script("window.prompt = function() {return 'my name'}")
# return null for prompt to simulate clicking Cancel
browser.execute_script("window.prompt = function() {return null}")
# return true for confirm to simulate clicking OK
browser.execute_script("window.confirm = function() {return true}")
# return false for confirm to simulate clicking Cancel
browser.execute_script("window.confirm = function() {return false}")
# don't return anything for leave page popup
browser.execute_script("window.onbeforeunload = null")
答案是:您可以尝试使用替代方法,例如:@b.alert.exists?
如果returntrue
,则:@b.alert.close
我觉得this以后可以帮到你
我想以编程方式处理 javascript 确认提醒,询问您是否要离开页面(请参见下面的屏幕截图)。
到目前为止我试过的方法都没有用。
浏览器没有识别出我要离开页面的返回值 true。
这是我试图处理此警报的部分:
if @b.div(:class, "infoMessageBox error").present?
puts "There was an error"
#@b.execute_script("window.confirm = function() {return true}")
@b.execute_script("window.onbeforeunload = function() {};")
@b.goto("#{@env}/TranslateFile.aspx")
break
end
我也看过这篇文章:“Dismiss "Confirm Navigation" popup with Watir”但是这篇文章中的方法对我的情况没有帮助。
我很想得到一些帮助,因为我被困在这里了。
这有助于解决我的问题。
我改进了代码,现在它运行得更好了,但将来可能会出现其他问题(希望不会)。
@b.refresh
if @b.alert.exists?
@b.alert.text
@b.alert.ok
end
@b.goto("#{@env}/TranslateFile.aspx")
这对我很有帮助,现在它摆脱了警报并继续工作流程。感谢帮助 ! :)
为可能无法处理警报的其他人提供更多信息(link 位于下方):
# Check if alert is shown
browser.alert.exists?
# Get text of alert
browser.alert.text
# Close alert
browser.alert.ok
browser.alert.close
JAVASCRIPT CONFIRMS
# Accept confirm
browser.alert.ok
# Cancel confirm
browser.alert.close
JAVASCRIPT PROMPT
# Enter text to prompt
browser.alert.set "Prompt answer"
# Accept prompt
browser.alert.ok
# Cancel prompt
browser.alert.close
# don't return anything for alert
browser.execute_script("window.alert = function() {}")
# return some string for prompt to simulate user entering it
browser.execute_script("window.prompt = function() {return 'my name'}")
# return null for prompt to simulate clicking Cancel
browser.execute_script("window.prompt = function() {return null}")
# return true for confirm to simulate clicking OK
browser.execute_script("window.confirm = function() {return true}")
# return false for confirm to simulate clicking Cancel
browser.execute_script("window.confirm = function() {return false}")
# don't return anything for leave page popup
browser.execute_script("window.onbeforeunload = null")
答案是:您可以尝试使用替代方法,例如:@b.alert.exists?
如果returntrue
,则:@b.alert.close
我觉得this以后可以帮到你