似乎我尝试过的代码都没有任何影响。我的目的是通过点击“确定”按钮关闭可能出现的任何和所有JavaScript提示。问题是,我的脚本对出现的提示没有影响。换句话说,它什么都不做。
这就是我所拥有的:
fx = FireWatir::Firefox.start(somepage)
fx.startClicker("OK")
fx.button(:id, "OK").click
fx.button(:id, "CONFIRM").click
HTML:
<script type="text/javascript">
alert("Alert!");
window.confirm("Confirm?");
</script>
提示中的文字可以改变,无论警报/确认提示内是什么,我打算点击OK。
PS:我正在运行Ubuntu。
答案 0 :(得分:6)
最好的方法是阻止弹出窗口触发。
require 'watir'
b = Watir::Browser.start "http://somepagewithdialogs"
# don't return anything for alert
b.execute_script("window.alert = function() {}")
# return some string for prompt to simulate user entering it
b.execute_script("window.prompt = function() {return 'my name'}")
# return null for prompt to simulate clicking Cancel
b.execute_script("window.prompt = function() {return null}")
# return true for confirm to simulate clicking OK
b.execute_script("window.confirm = function() {return true}")
# return false for confirm to simulate clicking Cancel
b.execute_script("window.confirm = function() {return false}")
# interact with some element which would trigger the pop up
b.button(:id => "dialogTrigger").click
有关详细信息,请参阅:http://watirmelon.com/2010/10/31/dismissing-pesky-javascript-dialogs-with-watir/。
答案 1 :(得分:0)
弹出窗口对我来说是黑魔法。你有没有尝试过这里的解决方案?
我还建议您在watir-general发布您的问题。
答案 2 :(得分:0)
我认为你的fx.button(:id,“OK”)。点击等待状态改变了。
但javascript对话框不会改变状态
所以你的watir会永远等待
如果不是那样的话,我不知道。
动作不会改变状态,永远不会返回。
所以需要点击不等
当我使用watir(不是firewatir)时,@ ie.button(:id,'OK')。click_no_wait。
然后最好等一下1~3秒弹出。
那么你喜欢。
而且如果你想控制msg-box(弹出窗口),需要AutoIT。
- 这是等待msg-box的示例,然后单击确定IE弹出窗口 -
autoit=WIN32OLE.new('AutoItX3.Control')
autoit.WinWait('Windows Internet Explorer')
autoit.WinActive('Windows Internet Explorer')
autoit.ControlClick('Windows Internet Explorer','','OK')
完全有可能我不明白你的意思。 如果是这样,请忽略这一点。
答案 3 :(得分:0)
查看/var/lib/gems/1.8/gems/firewatir-1.6.5/unittests/html/JavascriptClick.html(假设您的firewatir gem已安装在哪里)。我跑了测试,它对我有用。也许阅读测试会让你深入了解startClicker应该如何工作。
答案 4 :(得分:0)
这是一个永恒的问题,所以我只是添加一些更新的东西,为我做了
@browser.alert.exists?
@browser.alert.ok
@browser.alert.close
第一个将返回一个布尔值 第二个将会提示你做什么动作 第三个将关闭警报而没有