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

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

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

No.87828 の関連記事表示

<< 0 >>
■87828  webbrowser で クリックしたい
□投稿者/ ヒデキ -(2018/07/03(Tue) 16:37:46)

    分類:[VB.NET/VB2005 以降] 

    2018/07/03(Tue) 16:43:11 編集(投稿者)
    2018/07/03(Tue) 16:42:34 編集(投稿者)
    <pre><pre>2018/07/03(Tue) 16:41:33 編集(投稿者)

    <td class="bl_solid bb_solid shift_line fr" data-staff="0" data-name="テスト" data-s="1300" data-index="0" data-date_key="2018/07/01" data-datetime="2018/07/01 1300">&nbsp;</td>

    というhtmlをクリックしたいのですがうまくいかないのでお教えいただけましたら幸いです。

    For Each elem As HtmlElement In Webbrowser.Document.GetElementsByTagName("td")
    If elem.GetAttribute("data-name") = "テスト" Then
    If elem.GetAttribute("data-datetime") = "2018/07/01 1300" Then
    If elem.InnerHtml = "&nbsp;" Then
    'elem.SetAttribute("onclick", "true")
    elem.InvokeMember("click")
    System.Windows.Forms.Application.DoEvents()
    End If
    End If
    End If
    next

    上記のコードでは elem.InvokeMember("click")が実行されるとこまでは確認できておりますが
    実際にはクリックされないようです。

    他の方法でクリックできるようであれば、お教えいただけましたら幸いです。
    どうぞよろしくお願いいたします。</pre></pre>
親記事 /過去ログ151より / 関連記事表示
削除チェック/

■87832  Re[1]: webbrowser で クリックしたい
□投稿者/ WebSurfer -(2018/07/04(Wed) 10:08:52)
    No87828 (ヒデキ さん) に返信

    > 上記のコードでは elem.InvokeMember("click")が実行されるとこまでは確認できておりますが



    > 実際にはクリックされないようです。

    はそれぞれどのように確認したのでしょうか?

    矛盾していることを言われているような気がしますが・・・
記事No.87828 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87834  Re[2]: webbrowser で クリックしたい
□投稿者/ ヒデキ -(2018/07/04(Wed) 11:43:47)
    No87832 (WebSurfer さん) に返信
    > ■No87828 (ヒデキ さん) に返信
    >
    >>上記のコードでは elem.InvokeMember("click")が実行されるとこまでは確認できておりますが
    >
    > と
    >
    >>実際にはクリックされないようです。
    >
    > はそれぞれどのように確認したのでしょうか?
    >
    > 矛盾していることを言われているような気がしますが・・・
    >

    実際のサイトに接続して ステップ実行したことで elem.InvokeMember("click") まで通ったので
    「実行された」のだと、いう判断をしました。
    ところが その後 マウスでクリックしたサイト同じ動作が発生しないので
    「実際にはクリックされない」と判断しました。
記事No.87828 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87833  Re[2]: webbrowser で クリックしたい
□投稿者/ ヒデキ -(2018/07/04(Wed) 11:42:47)
    2018/07/04(Wed) 11:43:41 編集(投稿者)
    2018/07/04(Wed) 11:43:28 編集(投稿者)

    No87832 (WebSurfer さん) に返信
    > ■No87828 (ヒデキ さん) に返信
    >
    >>上記のコードでは elem.InvokeMember("click")が実行されるとこまでは確認できておりますが
    >
    > と
    >
    >>実際にはクリックされないようです。
    >
    > はそれぞれどのように確認したのでしょうか?
    >
    > 矛盾していることを言われているような気がしますが・・・
    >

    実際のサイトに接続して ステップ実行したことで elem.InvokeMember("click") まで通ったので
    「実行された」のだと、いう判断をしました。
    ところが その後 マウスでクリックした時と同じ動作が発生しないので
    「実際にはクリックされない」と判断しました。
記事No.87828 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87835  Re[3]: webbrowser で クリックしたい
□投稿者/ Hongliang -(2018/07/04(Wed) 12:36:24)
    <html><body><table><tr><td onclick="alert('ok')"></td></tr></table></body></html>
    というごく簡単なHTMLを使って、
    For Each elem As HtmlElement In Webbrowser.Document.GetElementsByTagName("td")
      elem.InvokeMember("click")
    Next
    を実行すれば問題なくアラートが表示されたので、この部分の問題はないはずです。
    多分、td要素のクリックではない別の契機でご所望の動作が開始されているのでしょう。
    // それがどんなのかはそのページ次第なので具体的なことは言えません。
記事No.87828 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87836  Re[3]: webbrowser で クリックしたい
□投稿者/ WebSurfer -(2018/07/04(Wed) 13:09:04)
    No87833 (ヒデキ さん) に返信
    
    Web のページを含めてすべて自分の環境でサンプルを作って試してみましたが、期待通り InvokeMember("click") 
    で click イベントは発火できます。
    
    html ソースは以下の通りです。検証のため、問題の td 要素には静的に onclick 属性に alert('clicked!') を
    追加しています。
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>
    
    </title></head>
    <body>
        <form method="post" action="./0043-WebBrowserTest.aspx" id="form1">
    <div class="aspNetHidden">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="8yr9nqcOXCnSmq9UzVtqEv91qCjtgI1E2BTopkzgep+8R1YRO2y041GPHpvJzGHELRFB83dM3UYYikJ4TxKOxSBHw0vTnoNSr9inraRqCL0=" />
    </div>
    
    <div class="aspNetHidden">
    
    	<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="59F85CC1" />
    </div>
            <h1>0043-WebBrowserTest.aspx</h1>
            <table>
                <tr>
                    <th>Colums-1</th>
                    <th>Column-2</th>
                    <th>Colums-3</th>
                </tr>
                <tr>
                    <td>line-1 / Column-1</td>
                    <td class="bl_solid bb_solid shift_line fr" data-staff="0" 
                        data-name="テスト" data-s="1300" data-index="0" 
                        data-date_key="2018/07/01" data-datetime="2018/07/01 1300" 
                        onclick="alert('clicked!')">&nbsp;</td>
                    <td>line-1 / Column-3</td>
                </tr>
                <tr>
                    <td>line-2 / Column-1</td>
                    <td>line-2 / Column-2</td>
                    <td>line-2 / Column-3</td>
                </tr>
            </table>
        </form>
    </body>
    </html>
    
    上記を WebBrowser から呼び出し、DocumentCompleted イベントのハンドラで、質問者さんと同じコードを走らせると
    期待通り alert は表示されます。
    
    つまり、質問者さんの WebBrowser のコードで、問題の td 要素を指す HtmlElement は取得でき、InvokeMember("click") 
    でその td 要素の click イベントは発火できているということになります。
    
    質問者さんが対象としている実際のページの td 要素には静的には onclick 属性は設定してないようですが、であれば、
    あるタイミングで動的に click イベントのリスナをアタッチしているので、質問者さんの WebBrowser のコードで
    InvokeMember("click") とした時点ではまだリスナがアタッチされてないのではないかと思います。(思うだけで確証
    はありませんが)
記事No.87828 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87840  Re[4]: webbrowser で クリックしたい
□投稿者/ ヒデキ -(2018/07/04(Wed) 14:05:18)
    > 上記を WebBrowser から呼び出し、DocumentCompleted イベントのハンドラで、質問者さんと同じコードを走らせると
    > 期待通り alert は表示されます。
    >
    > つまり、質問者さんの WebBrowser のコードで、問題の td 要素を指す HtmlElement は取得でき、InvokeMember("click")
    > でその td 要素の click イベントは発火できているということになります。
    >
    > 質問者さんが対象としている実際のページの td 要素には静的には onclick 属性は設定してないようですが、であれば、
    > あるタイミングで動的に click イベントのリスナをアタッチしているので、質問者さんの WebBrowser のコードで
    > InvokeMember("click") とした時点ではまだリスナがアタッチされてないのではないかと思います。(思うだけで確証
    > はありませんが)


    そういうふうに確認することで
    検証ができるのですね。

    ものすごく勉強になりました。

    仰るところを 調べていこうと思います。

    今回は大変お手数をおかけくださいまして
    感謝しております。
    大変ありがとうございました。
記事No.87828 のレス / END /過去ログ151より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -