C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.88833 の関連記事表示

<< 0 >>
■88833  C# webBrowser.Navigate後のボタンクリッ
□投稿者/ びぎなー青ドンちゃん -(2018/10/03(Wed) 17:31:58)

    分類:[.NET 全般] 


    分類:[.NET 全般] 
    環境:Windows 10
       Visula Studio 2017
       C#

    いつもお世話になっております。

    C#のWebBrowser コントロールを使用し
    WEBの巡回ツールのような物を作っています。

    webBrowser.Navigateで目的にページへ遷移した後
    そのページにあるボタンを押すまでは実装できたのですが
    ボタンクリックまで1.8秒程かかってしまいます。

    以下のようなコードを実装しました。

    //-----------------------------------------
    //-----------------------------------------
    webBrowser1.Navigate("http://〇〇〇/△△△/□□□");

    //目的ページへの遷移完了を待つ処理
    do
    {
    Application.DoEvents();

    }
    while (webBrowser1.IsBusy ||
    webBrowser1.ReadyState != WebBrowserReadyState.Complete ||
    webBrowser1.Document.Body.InnerHtml == null
    );

    HtmlElementCollection forms = webBrowser1.Document.GetElementsByTagName("form");
    forms[0].InvokeMember("submit");
    //-----------------------------------------
    //-----------------------------------------


    webBrowser1.Navigateからsubmitまで時間短縮するよい方法はありますでしょうか。


    本サイトの過去記事で
    「速くしたいなら、やっぱり WebBrowser を利用しないのが一番」というコメントも拝見しました。

    C#で「WebBrowser を利用しない」で上記のような目的ページ遷移後にボタンを押す動作をさせる
    何かよい方法もございましたらご教示頂きたく。

    C#について勉強中につき質問内容が初心者で申し訳ございませんが
    お力添え頂きたく宜しくお願いいたします。


親記事 /過去ログ153より / 関連記事表示
削除チェック/

■88835  Re[1]: C# webBrowser.Navigate後のボタンクリッ
□投稿者/ WebSurfer -(2018/10/03(Wed) 19:59:37)
    No88833 (びぎなー青ドンちゃん さん) に返信

    何に時間がかかっているか(どこがボトルネックか)を把握できてないですよね?

    たぶん、1.8 秒の内ほとんどが要求が出て、応答が返ってきて、WebBrowser で応答の読み込みが
    終了するまでに費やされているのではないでしょうか?

    Fiddler などのキャプチャツールを使って調べてみてください。
記事No.88833 のレス /過去ログ153より / 関連記事表示
削除チェック/

■88836  Re[2]: C# webBrowser.Navigate後のボタンクリッ
□投稿者/ びぎなー青ドンちゃん -(2018/10/03(Wed) 22:01:12)
    WebSurfer様

    お答え頂きありがとうございます。
    ご指摘のとおり何に時間がかかっているかわかっておりません。

    WebBrowserReadyState.Complete待ちが悪いのではないかと考えておりました。

    WebBrowserの読み込みが完了しないと
    遷移後のページでsubmitできないのでしょうか。

    ※読み込み中にsubmitできないのでしょうか。


    > Fiddler などのキャプチャツールを使って調べてみてください。

    ありがとうございます。ご教示頂きましたツールを使用してみます。

    まずはお礼まで。


記事No.88833 のレス /過去ログ153より / 関連記事表示
削除チェック/

■88839  Re[3]: C# webBrowser.Navigate後のボタンクリッ
□投稿者/ WebSurfer -(2018/10/03(Wed) 22:41:20)
    No88836 (びぎなー青ドンちゃん さん) に返信

    > WebBrowserの読み込みが完了しないと
    > 遷移後のページでsubmitできないのでしょうか。

    読み込みが完了しないと form オブジェクト(form[0])は取得できないと思います。
    取得できなければ forms[0].InvokeMember("submit"); で submit はできないという
    ことになるはずです。

    一度、試しに WebBrowser.DocumentCompleted イベントを利用して、そのハンドラで
    処置してみてはいかがですか? 速くなるのは期待薄かもしれませんが、物は試しと
    いうことで。

    速くならなくても、Application.DoEvents(); をループに入れて実行するのは止めた
    方がよさそうな気がしますし。
記事No.88833 のレス /過去ログ153より / 関連記事表示
削除チェック/

■88847  Re[4]: C# webBrowser.Navigate後のボタンクリッ
□投稿者/ びぎなー青ドンちゃん -(2018/10/04(Thu) 15:15:36)
    WebSurfer様

    ご回答頂き誠にありがとうございます。
    読み込み中submitできない件、承知しました。


    【結果】
    ご教示頂きました「WebBrowser.DocumentCompleted イベント」をトリガーにして
    submitしてみたところ0.5秒ほどはやくなりました。



    【問題点】
    現在、WebBrowser.DocumentCompletedイベントが数回発生してしまい
    タイミング次第でsubmitできない場合がありました。



    【その他】
    WebBrowserのReadyState がInteractiveの状態等でsubmitを実行してみました。
    forms[0].InvokeMember("submit")で特にプログラム上の例外エラーにはならないものの
    期待する動作になりませんでした。

    ご指摘のApplication.DoEventsは入れないように致しました。
    ありがとうございます。
    過去にApplication.DoEventsを使用し
    適切でない箇所にApplication.DoEventsが入っていたため
    フリーズが発生する現象を経験しております(汗



    その他いろいろ試してみたいと思います。
    お忙しい中ご回答頂きありがとうございました。







記事No.88833 のレス / END /過去ログ153より / 関連記事表示
削除チェック/

■88848  Re[5]: C# webBrowser.Navigate後のボタンクリッ
□投稿者/ WebSurfer -(2018/10/04(Thu) 15:44:14)
    No88847 (びぎなー青ドンちゃん さん) に返信

    > 【問題点】
    > 現在、WebBrowser.DocumentCompletedイベントが数回発生してしまい
    > タイミング次第でsubmitできない場合がありました。

    複数の frame を使っていたり、親ページの中で iframe を使っていたりすると DocumentCompleted イベントが
    複数回発生します。たぶんその影響だと思います。
記事No.88833 のレス / END /過去ログ153より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -