Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ruby watir脚本处理浏览器javascript确认导航警报_Javascript_Ruby_Watir - Fatal编程技术网

如何使用ruby watir脚本处理浏览器javascript确认导航警报

如何使用ruby watir脚本处理浏览器javascript确认导航警报,javascript,ruby,watir,Javascript,Ruby,Watir,我希望以编程方式处理javascript确认警报,询问您是否希望离开页面(请参见下面的屏幕截图) 到目前为止,我尝试过的方法没有奏效 浏览器无法识别我返回的值为true,表示我想离开页面 这是我试图处理此警报的部分: if @b.div(:class, "infoMessageBox error").present? puts "There was an error" #@b.execute_script("window.confirm = function(

我希望以编程方式处理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
我也读过这篇文章:“但本文中的方法对我的情况没有帮助

我很想得到一些帮助,因为我被困在这里了

这有助于解决我的问题。

我改进了代码,现在它工作得更好了,但将来可能会出现一些其他问题(希望不会)

这帮助了我,现在它逃过了警报并继续工作流程。谢谢你的帮助!:)

其他可能在处理警报时遇到问题的人的更多信息(链接位于下面):

# 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?
如果返回
true
,则:
@b.alert.close


我想在将来可以帮助你

我想,你可以尝试使用其他方法,例如:
@b.alert.exists?
如果返回true,那么:
@b.alert.close
我已清除了代码,现在它工作得更好,但将来可能会有一些其他问题(希望不会)。你在问题中编码修复了我的问题,我不知道
@b.refresh
谢谢!StackOverflow上不鼓励仅链接的答案,因为链接源可能有一天会消失。在你的答案中包含该页面的相关内容,而不仅仅是一个链接。@D-side答案在第一条评论中,我认为没有必要重复它。@AlexGolubenko在评论中回答也不是一件好事,它破坏了奖励系统(这已经足够好了):有人可能会关注你的评论,而你不会从应得的投票中获得你的代表,因为评论没有资格获得代表奖励。这是系统的工作原理:)@D-side你是对的,我不确定答案,所以我在评论中写了它,当我写答案时,我不得不将它从评论中删除并添加到答案中,我的错误:(@AlexGolubenko尝试没有坏处:)如果答案变得不相关,你可以删除它(比如,如果同时编辑了问题)或者被证明是不好的建议,因为其他人可能会在评论中强调这一点。
# 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")