2012-02-28 38 views
2

ウェブページの読み込み時に読み込まれるJavaScriptのポップアップ/メッセージボックス(つまり、新しいIEウィンドウではなく、スクリプトalert())を閉じる方法を探しています。VBAオートメーションを使用したJavaScriptアラートの終了

私は現在、検索フォームにデータをロードし、検索を実行し、結果から必要な情報を取り出し、検索を終了し、次にリスト内の次の項目に進むコードを持っています。場合によっては、検索結果から欠落している重要な情報があります。これが起こると、ページが読み込まれたときにページ上のJavaScriptがメッセージをポップアップし、情報が欠落していることをユーザーに知らせます。オートメーションを使用すると、ボックスがクリアされてから続行するコードが停止し(待機)、ユーザーはOKボタンをクリックする必要があります。

(私はページのソーススクリプトを直接変更することはできません。これは職場の責任範囲外ですから、一般的な使用のためにこの機能を保持することが重要です。 )私が作成しているこの小さな使用法の利点があります。

私はソーススクリプトを変更できませんが、ロードされたスクリプトを変更してポップアップ/アラートが表示されないようにする方法はexampleです。しかし、それは既にロードされたページに関係しており、実際には(私が知る限り)私のためにはうまくいきません。

IE.Document.getElementById("clearRelItems").removeAttribute "onClick" 
IE.Document.getElementById("clearRelItems").setAttribute "onClick", "return true;" 

前にページを変更を作るために、このメソッドを使用することが可能ですが、完全にロードされましたか?つまり、これを使用してページロード時に関数呼び出しをバイパス/回避することができますか?

私はsendkeysについて知っていますが、可能な限りこのオプションを避けることをお勧めします(他の方法がない場合はこのオプションを使用することになります)。この機能は、ユーザーが開始してから、バックグラウンドで実行されることを意図しており、完了するまでに時間がかかります。

@Kyleが提案したようにXMLを捉えてみましたが、私はこの方法を動作させるのに十分堪能ではないと思います。

アラートを回避するにはどうすればよいですか?アラートの[OK]ボタンを実際にアクティブにする方法はありますか?ページの警告/読み込みを他の方法でバイパスできますか?

+0

これはJavascriptの警告です()。メッセージボックス?またはhtml要素ですか? – Cilvic

+0

これは警告()ボックスです。 – Gaffi

答えて

2

スクリプトが停止していることを認識し、ポップアップを閉じるために「enter」キーストロークを送信するだけで回避できます。

+0

私はsendkeysについて知っていますが、これはユーザーによって開始され、完了するまでに時間がかかるため、バックグラウンドで実行されています。他の方法がない場合、このオプションを使用することになります。(元のquesitonにこの情報を追加する) – Gaffi

+0

私はまだやっていないだろうが、私はこのオプションと一緒に行かなければならないだろう。ありがとう! – Gaffi

+0

私の場合、SendKeysはJavaScript confirm()ポップアップを正常に閉じることができませんでした。 SendKeysも動作しなかった前にApplication.Waitを追加しました。誰でもこの問題がありますか? – 10basetom

1

MS XMLクラスを使用してデータを直接ポスティングし、結果を解析する方法を見てきましたか?これはIEの自動化よりもはるかに高速ですが、必ずしも可能ではありません。

編集:実際には要求と応答を処理するクラスを使用しています。実際にはXMLを使用していません。バックはあなたのアイデア与えることながら:

Sub GetDataXML() 

Dim strPostText As String, strResponse As String 
Dim Pressure As Double, Temperature As Double 
Dim XMLrequest As Object 

Pressure = CDbl(InputBox("Enter the Pressure")) 
Temperature = CDbl(InputBox("Enter the Temperature")) 

strPostText = "lang=english&calc=standard&druck=" & Pressure & "&druckunit=1&temperatur=" & Temperature & "&tempunit=1&Submit=Calculate" 

Set XMLrequest = CreateObject("MSXML2.XMLHTTP") 

With XMLrequest 
    .Open "POST", "http://www.peacesoftware.de/einigewerte/calc_co2.php5", False 
    .setRequestHeader "Content-type", "application/x-www-form-urlencoded" 
    .send (strPostText) 
    Do: DoEvents: Loop Until .readyState = 4 
    strResponse = .responseText 
    .abort 
End With 

Debug.Print strResponse 

End Sub 

をExcelでクエリテーブルを使用している場合、これはデータの解析を扱うように、それはさらに簡単です。

上記の情報は役に立ちますか?

+0

私は正常にあなたの例を得ました、@カイル。しかし、私が紛失しているPOSTコマンドには何か他のものがあります(これはここでの私の知識不足を前提としています)。どの変数が渡されたのかわからなくても、元のページの範囲外でこれを行うたびにスクリプトが私をログインページに誘導するので、私の不明な点を修正することはできません。 Debug.Printは、私が慣れ親しんでいる標準のログイン画面のコードを出力します。これらの変数はどのように表示できますか? INPUT/OPTIONタグごとに1つずつありますか? (もしそうなら、かなりの数があります) – Gaffi

+0

この方法は必ずしも可能ではありません。あなたのPOST変数を取得する最も簡単な方法は、開発ツールのブラウザからです。どのブラウザを使用していますか? – SWa

+0

これは仕事用で、私の唯一の選択肢はIE 7です。 – Gaffi

関連する問題