3

DocumentComplete イベントを使用してフォームをオートコンプリートしました。チェックボックス以外はすべてOKです。htmlコードは次のとおりです。

<span class="myClass" style="padding-left: 12px; vertical-align: bottom; cursor: pointer;">
<input id="ich_liebe_dich" type="checkbox" name="ich$liebe$dich">
<label for="ich_liebe_dich"> MyLabel</label>
</span>

私は使用してみました:

webbrowser.Document.GetElementById("ich_liebe_dich").InvokeMember("click");

webbrowser.Document.GetElementById("ich$liebe$dich").InvokeMember("click");

また:

foreach (HtmlElement current in webbrowser.Document.GetElementsByTagName(tag))
{
    if (current.GetAttribute(attr).Equals(attName))
        current.InvokeMember(invoke);
}

ここで、attr="id"、tag="input"、invoke="click"、および attName= "ich_liebe_dich" または "ich$liebe$dich" のいずれかです。

私が得た最高のものは、一時的に-ほんの一瞬-チェックされたチェックボックスでした。なぜこれが起こるのでしょうか?解決策はありますか?

4

2 に答える 2

1

似たような質問にすでに答えていた

webBrowser.Navigate(" http://www.google.com ");

ID がある場合は、これを使用します。

webBrowser1.Document.GetElementById("id").InvokeMember("click");

タグ名がある場合はこれを使用します

 webBrowser.Navigate("http://www.google.com");

Web ブラウザの DocumentCompleted イベントで

HtmlElement textElement = webBrowser.Document.All.GetElementsByName("q")[0];
textElement.SetAttribute("value", "your text to search");
HtmlElement btnElement = webBrowser.Document.All.GetElementsByName("btnG")[0];
btnElement.InvokeMember("click");

名前クラスがある場合は、これを使用します。

HtmlElementCollection classButton = webBrowser1.Document.All;
foreach (HtmlElement element in classButton) 
 {
     if (element.GetAttribute("className") == "button")
    {
       element.InvokeMember("click");
     }
 }

テキストボックス google.com にテキストを追加するには、次を使用します。

 webBrowser1.Document.GetElementById("gs_tti0").InnerText = "hello world";
于 2012-07-04T12:47:45.120 に答える
1

InvokeMember("check") についてどこにも読んだことがなく、ググったので、leppie の答えに興味を持ちました。私が得た最初の答えはこれですhttp://social.msdn.microsoft.com/forums/en-US/winforms/thread/750b11dc-08f8-4cb4-bcaf-80c91f0fd425/

記事を読んで解決策を見つけました... DocumentCompleted イベントにこの行を追加すると、すべて正常に動作します!

if (webbrowser.ReadyState==WebBrowserReadyState.Complete)

ページにフレームがあり、ページ全体が読み込まれる前に DocumentCompleted イベントが発生するようです。

編集:私が使用した(そして動作する)コードは次のとおりであることを忘れていました:

webbrowser.Document.GetElementById("ich_liebe_dich").InvokeMember("click");
于 2012-07-04T09:43:13.167 に答える