2009-09-17 89 views
1

我有一個簡單的C#WinForms Crud AP的員工,必須做很多簡單的網頁查找。目前它加載5個網站並將一個搜索詞放入剪貼板。然後,員工必須將搜索字詞粘貼到每個網站的搜索文本框中,然後按回車鍵。有沒有簡單的方法來輸入他們的數據?當網站加載時,搜索文本框通常具有焦點,但我無法找到一種方法來檢測頁面何時加載或如何將數據發送到窗口。簡單的瀏覽器控制在C#

看起來,從這些有用的答案,就像我這樣做是錯誤的方式。我是用我的好朋友的幫助下,谷歌先生髮現代碼

System.Diagnostics.Process.Start("www.website.com"); 
Clipboard.SetText(textBox1.Text, TextDataFormat.Text); 

我將在本週做一些更多的研究WebBrowser控件上

回答

3

您可以使用Web瀏覽器的DocumentCompleted事件在頁面加載完成後通知。

如果你輸入文字到文本框中有一個唯一的ID,你可以使用WebBrowser.Document.GetElementById:

webBrowser.Document.GetElementById("some_id").InnerText = theSearchText; 

的getElementById返回HtmlElement(或空的情況下,如果元素WASN」 t找到)。請注意,「.InnerText」可能不適用於所有元素類型,還有InnerHtml和許多其他屬性,我建議在決定如何使用它之前,先使用HtmlElement類。

讓我知道如果你沒有一個元素的唯一ID,還有很多其他方法來找到一個元素。包括通過Document.Body使用暴露的DOM。

+0

謝謝你,你幫了我很多 – 2017-08-12 11:01:41

1

您應該能夠掛接到Web瀏覽器的導航中的事件這應該告訴你何時加載頁面(我想!我不是100%確定)。至於設置文本,如果你確定該文本框具有焦點,你可以做這樣的事情:

 Clipboard.SetText("Stackoverflow"); 
     this.webBrowser1.Document.ExecCommand("Paste", false, null); 
0

加載頁面(或框架!)時會觸發WebBrowser的DocumentCompleted事件。當頁面有框架時,DocumentCompleted事件會多次觸發。在DocumentCompleted事件中,您將ReadyState屬性與ReadyState.Completed進行比較,以檢查它是否已完全加載。

但是一般來說,使用SendKeys不是最好的方法。 Matthew Brindley的回答(使用GetElementById)是最好的方法,但這對於文件輸入控件不起作用。