Ruby Watir:JavaScriptアラートをクリックしますか?
-
20-09-2019 - |
質問
私が試したコードのどれも影響を与えないようです。私の意図は、「OK」ボタンを押すことで発生する可能性のあるすべての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を走っています。
解決
最良の方法は、ポップアップがトリガーされるのを止めることです。
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/ 詳細については。
他のヒント
ポップアップは私にとって黒い魔法です。ここからソリューションを試しましたか?
また、あなたの質問を投稿することをお勧めします ワティール将軍.
私はあなたのfx.button(:id、 "ok")だと思います。クリックは待機状態が変更されました。
しかし、JavaScriptダイアログは状態を変更しません。
だからあなたのワタルは永遠に待っているでしょう。
そうでなければ、私は知りません。
アクションは状態を変更せず、決して返さないでください。
だからクリックする必要はありません。
Watir(Firewatirではなく)を使用するとき、 @ie.button(:id、 'ok')。click_no_wait。
その後、ポップアップを1〜3秒待ってください。
それからあなたが好きなように。
さらに、msg-box(ポップアップ)を制御する場合は、自動車する必要があります。 - これは待機msg-boxのサンプルであり、ieポップアップの[OK]をクリックします -
autoit=WIN32OLE.new('AutoItX3.Control')
autoit.WinWait('Windows Internet Explorer')
autoit.WinActive('Windows Internet Explorer')
autoit.ControlClick('Windows Internet Explorer','','OK')
私はあなたが何を意味するのか完全に理解していない可能性があります。もしそうなら、これを無視してください。
/var/lib/gems/1.8/gems/firewatir-1.6.5/unittests/html/javascriptclick.html私はテストを実行し、それは私のために働きました。たぶん、テストを読むと、StartClickerがどのように機能するかについての洞察が得られるかもしれません。
これは永遠に尋ねられたので、私はもう少し更新されたものを追加しました
@browser.alert.exists?
@browser.alert.ok
@browser.alert.close
1つ目はブールの2番目の1つを返します。