たとえば、コードを使用してユーザー入力を行わない場合、プログラムでGoogleの[検索]ボタンをクリックするにはどうすればよいですか(検索ボックスに既に入力していて、google.comにいるとします)。
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";
次のコードを試してください:
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");
}
InvokeMember
などの使用に加えて、ID
またはClass
から呼び出されたときにWebページの応答に問題がある場合は、_{TAB}
_&_{ENTER}
_ .NET内でSendKeys
クラスを使用します。私は多くのWebページ用のスクリプトを作成しており、両方の組み合わせを使用する必要があることを発見しました(SendKeys
は@AleWinの回答のメソッドよりもはるかに面倒です)。