web-dev-qa-db-ja.com

Webブラウザーコントロールのボタンはどのようにクリックしますか?

たとえば、コードを使用してユーザー入力を行わない場合、プログラムでGoogleの[検索]ボタンをクリックするにはどうすればよいですか(検索ボックスに既に入力していて、google.comにいるとします)。

16
Minicl55
webBrowser1.Navigate("http://www.google.com");

IDをお持ちの場合、これを使用:

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

TagNameがある場合は、これを使用してください

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

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

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

名前がある場合Classこれを使用:

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

TextBoxにテキストを追加してgoogle.comを検索するには、次のようにします。

 webBrowser1.Document.GetElementById("gs_tti0").InnerText = "hello world";
42
Alessio Koci

次のコードを試してください:

public WebBrowser webBrowser1 = new WebBrowser();
    private void WebForm_Load(object sender, EventArgs e)
        {
            try
            {
                webBrowser1.Height = 1000;
                webBrowser1.Width = 1000;
                this.Controls.Add(webBrowser1);
                webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
                this.webBrowser1.Navigate("www.google.com.au");
            }
            catch
            { }

次の関数をc#フォームに書き留めます。

public void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        var webBrowser = sender as WebBrowser;
        webBrowser.DocumentCompleted -= WebBrowser_DocumentCompleted;

        HtmlElement textElement = webBrowser.Document.All.GetElementsByName("q")[0];
        textElement.SetAttribute("value", "mlm company");
        HtmlElement btnElement = webBrowser.Document.All.GetElementsByName("btnG")[0];
        btnElement.InvokeMember("click");


    }
2
user2499974

InvokeMemberなどの使用に加えて、IDまたはClassから呼び出されたときにWebページの応答に問題がある場合は、_{TAB}_&_{ENTER}_ .NET内でSendKeysクラスを使用します。私は多くのWebページ用のスクリプトを作成しており、両方の組み合わせを使用する必要があることを発見しました(SendKeysは@AleWinの回答のメソッドよりもはるかに面倒です)。

ここにSendKeysクラスへのリンクがあります。

0
Ben Holland