none
webBrowserで開いたページのJavascript確認用Comfirmダイアログ動作の制御する方法とは? RRS feed

  • 質問

  • Jeshonと申します。
    お世話になります。

    まだ開発中に問題点がありました。ご教授のほどお願いします。

    詳細は下記となります。
    例:あるページに配置されたボタンをクリックすると、JavaScriptの確認用Comfirmダイアログが表示されます。ユーザが「Yes」をクリックすると、次の画面へ移動する。このユーザの操作が自動的にプログラムで行いたいです。
    現状考えている対策としては:

    ①確認用Comfirmダイアログを表示させないように、ある方法で自動的にReturn tureで次の画面へ移動する。
    ②ユーザ操作を模擬して、
    確認用Comfirmダイアログを表示した際、Enterキーを送る。
    二つ対策が①番はやりたいですが、方法が分からなくて、教えていただければ助かります。

    よろしくお願いします。




    2008年11月29日 11:15

回答

  • SurferOnWwwさん

    情報ありがとうございます。Jeshonです。

    解決策を探しならが、いろいろ試していますので、
    まだ何か質問をさせていただきたいです。

    よろしくお願いします。

    2008年12月5日 7:59

すべての返信

  • 先のスレッド「外部プログラムでIE、FFなどのブラウザをWebBrowserで解析することは
    可能でしょうか? 」は放置ですか?

    2008年11月29日 11:27

  • SurferOnWww さん

    ご連絡ありがとうございます。
    先日投稿したスレッドはまだ解決できず、調査し続いています。
    「外部プログラムでIE、FFなどのブラウザをWebBrowserで解析することは
    可能でしょうか?」について、JScriptを使って可能ですが、.netでまだわからないです。
    解決策がなければ、変わりにWebBrowserで実現可能なので、今回のスレッドを独立で考えっていいと思います。


    よろしくお願いします。

    2008年11月29日 12:21
  • ボタンの onclick に JavaScript が設定してあるのであれば、そのボタン
    の HtmlElement を取得して、HtmlElement.SetAttribute で書き換えてし
    まうという方法はどうですか?

     

    検証してませんので、100% 自信はありませんが、そのぐらいしか方法は思
    いつきません。

    2008年11月30日 0:43
  • ちょっと試してみましたが、何故か自分の環境では HtmlElement.SetAttribute メソッド
    ではうまくいかなかったです。

     

    最後の手段的ですが、HtmlElement.OuterHtml プロパティを使って、 input タグ部分を

    すべて換えて OK でした。例えば下記のように:

     

    Code Snippet

    private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        HtmlElement element = webBrowser.Document.GetElementById("button1");
        element.OuterHtml = "<input type=\"button\" id=\"button1\" name=\"button1\" value=\"Next Page\" onclick=\"location.href='移動先の URI'\" />";
    }

     

     

    要するに HtmlElement オブジェクトさえ取得できれば、何とでもなると思います。

    2008年11月30日 9:10
  • SurferOnWwwさん

    サンプルありがとうございます。Jeshonです。

    上記のサンプルは確かに次のページへ遷移できますが、Comfirmダイアログで確認を取る際、何か処理をいれった場合、上記のやり方で処理を抜けってしまいます。

    最適な方法として、ユーザの操作を模擬して、なるべくページの中身を変えない方向ほうがいいのではないかと考えています。
    2008年11月30日 12:58
  •  Jeshon さんからの引用

    最適な方法として、ユーザの操作を模擬して、なるべくページの中身を変えない方向ほうがいいのではないかと考えています。

     

    Windows アプリからプログラムで JavaScript の confirm ダイアログの[OK]
    ボタンを押す方法、もしくは、それに Enter キーを送る方法というのは自分に
    は分かりません。

     

    もし、HTML ソースの方に手を加えられるのであれば、オリジナルの JavaScript
    コードの confrim() の部分のみ true に変更した試験用コードを追加して、ボ
    タンクリックの代わりに、HtmlDocument.InvokeScript メソッドで実行させると
    いう手も考えられますが・・・

     

    「ページの中身を変えない方向」での何らかの手段はあるのかもしれませんが、

    素人の自分の知識の範囲を超えていますので、残念ながら提案できません。

     

    上で提案した方法で目的に適わないなら、すみませんが、他の方の回答に期待し
    てください。

    2008年12月1日 11:43
  • SurferOnWwwさん

    情報ありがとうございます。Jeshonです。

    解決策を探しならが、いろいろ試していますので、
    まだ何か質問をさせていただきたいです。

    よろしくお願いします。

    2008年12月5日 7:59