どうすれば表示されることがあり、すべてのjavascriptのアラートと確認を閉じるためのAutoItを使用することができますか?
-
19-09-2019 - |
質問
私はセレンでテストしていると私は、ページの読み込みに起こるものの束を持っています。私はAutoItのを知った、と私はそれがすべてのJavaScriptのダイアログの問題を扱うことができると考えていました。私はこれを扱うことができるよう、いくつかのAutoItスクリプトのためにウェブを中心に探していた...
他のオプションも同様に役立つだろう!
私は、必ずしもすべてのコードを必要としませんが、正しい方向にいくつかの点が参考になります。
解決
さてので、このソリューションは、私の作品...私はここ2つのウィンドウを閉じることができました。また、私はクールで、その名前に基づいてポップアップを扱うことができるようになります。私は、スクリプトをlauchedた後、それは常にバックグラウンドで実行されます。私はそれがタスクマネージャから、右のタスクバーエリアからI単に近くのAutoItを終了したいときに。
While True
If WinWait('Name of your Popup', '', 1) == 1 Then
;Wait for page to load if found
Sleep(10000)
;Close Page
Send('!{F4}')
Sleep(5000)
;Confirm Dialog
Send('{ENTER}')
Sleep(1000)
;Close Lanucher Page
Send('!{F4}')
Sleep(5000)
;Confirm Dialog
Send('{ENTER}')
EndIf
;Let another thread have a turn
sleep(3)
WEnd
また、これは直接のpython、詳細の中から可能です: http://www.parrisstudios.com /?p = 308 に、あなたはまだautoit3を必要とします。
他のヒント
あなたは、プログラム、それらを無効にするか、条件(すなわち、デバッグモード)に基づいて、それらをオフになり、あなたのコード内の別のモードを作成したい場合があります。
マクロの記録プログラムは、同様にあなたが考えるように動作しません。典型的には、マクロ記録プログラムマウスクリックやキー押下のタイミングの記録位置。より良好なマクロ記録プログラムは、(典型的には、画像処理)および(まれ)、コンピュータビジョン技術を使用します。これらの技術を使用するソリューションは、一般的に非常に高価です。 (座席あたり5K-10K)[私はより良いバージョン<のhref = "https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jspの名前のいずれかを思い出すことができませんか?亜鉛= BTO&CP = 1-11-127-24%の5E1352_4000_100__」のrel = "nofollowをnoreferrer"> QuickTestののが、それがHPによって買収された会社によって作られたされる場合がある]。
私はAutoItの持つWebページと対話しようとしていたと愚かなjavascriptのアラートはすべてを壊す維持し、私は最終的にそれらを無効にする方法を考え出したので、私は、私はここにそれを投稿だろうと思っます:
#include <ie.au3>
$oIE = _IEAttach('https://www.site.com','URL')
$EventObject=ObjEvent($oIE.document,"IEEvent_")
Func IEEvent_onreadystatechange()
$readystate=$oIE.document.readystate
ConsoleWrite ($readystate & @CRLF )
if $readystate='interactive' then killalert()
EndFunc
while 1
sleep(100)
WEnd
func killalert()
Local $o_head = $oIE.document.all.tags("HEAD").Item(0)
Local $o_script = $oIE.document.createElement("script")
With $o_script
.language = "jscript"
.type = "text/javascript"
.text = 'function alert(message) {};'
EndWith
$o_head.appendChild($o_script)
EndFunc
何これが行うことは(どうやらこれは、ページのほとんどが読み込まれた後ですが、それは私が考えるものを「走る」の前に)ときにページレディ状態=「インタラクティブ」関数は、AutoItの中で呼び出される必要がありです。基本的にいくつかのJavaScriptを挿入していますそれは(上の[OK]をクリックすることを心配する警告ダイアログ)何もしないように警告()関数を再定義するページ。私はこれをテストしているし、それが動作します。
ページ内のフレームから呼び出され、アラート()関数を使用している場合は、は、あなたがonreadystatechangeにイベント、代わりにメイン文書のフレームのreadyStateのプロパティを使用する必要があります。