5

Webブラウザコントロールを使用してVS2010C#でWindowsフォームアプリケーションを開発しています。私の目標は、このWebサイトでのナビゲーションを自動化することですが、ある時点でWebサイトにJavaScriptアラートがポップアップ表示され、[OK]ボタンを押すまで自動化が停止します。ポップアップしたときにEnterプレスをシミュレートすることで問題を解決しましたが、アプリケーションを機能させるには、アプリケーションに焦点を合わせたままにする必要があります。私の質問は、ウェブサイトからこのカスタムjavascriptアラートを強制終了する方法はありますか(私はサイドにアクセスできません、クライアント側から強制終了します)、それが表示されないようにするか、この問題を修正する他の方法はありますか?表示されるjavascriptアラート(メッセージボックス)はエラーではなく、そのWebサイトのプログラマーが何らかの理由でそこに置いたjavascriptアラートです。

4

1 に答える 1

0

イベントを消費し、ページをロードする前に をNavigatedインターセプトして、参照を削除することができます。DocumentTextalert(...);

MSDNのNavigatedページから:

コントロールが新しいドキュメントに移動したNavigatedときに通知を受け取るイベントを処理します。WebBrowserイベントが発生すると、新しいドキュメントの読み込みが開始されます。これは、 、、およびプロパティNavigatedを介して、読み込まれたコンテンツにアクセスできることを意味します。DocumentDocumentTextDocumentStream

ここにいくつかのコードがあります:

using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace Your.App
{
    public class PopupSuppress
    {
        WebBrowser _wb;
        public PopupSupress()
        {
            _wb = new WebBrowser();
            _wb.Navigated += new WebBrowserNavigatedEventHandler(_wb_Navigated);
        }

        void _wb_Navigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            string alertRegexPattern = "alert\\([\\s\\S]*\\);";
            //make sure to only write to _wb.DocumentText if there is a change.
            //This will prompt a reloading of the page (and another 'Navigated' event) [see MSDN link]
            if(Regex.IsMatch(_wb.DocumentText, alertRegexPattern))
                _wb.DocumentText = Regex.Replace(_wb.DocumentText, alertRegexPattern, string.Empty);
        }
    }
}

ソース/リソース:

于 2012-09-18T19:00:46.443 に答える