有沒有方法可以取消選中/選中Web瀏覽器控件中加載的網頁中的複選框?謝謝。通過WebBrowser控件取消選中網頁中的複選框
更新:(這是我原來沒有運氣試過)
HtmlDocument rememberme = this.webBrowser1.Document;
rememberme.GetElementById("remBox").SetAttribute("checked", "false");
有沒有方法可以取消選中/選中Web瀏覽器控件中加載的網頁中的複選框?謝謝。通過WebBrowser控件取消選中網頁中的複選框
更新:(這是我原來沒有運氣試過)
HtmlDocument rememberme = this.webBrowser1.Document;
rememberme.GetElementById("remBox").SetAttribute("checked", "false");
您可以使用:
webBrowser.Document.InvokeScript
見:
這樣,您就可以調用JS功能,將你想要的頁面內容。
另一種方法是使用MSHTML API,像這樣: ((HTMLInputElement)this.webBrowser1.Document.GetElementById("test").DomElement)[email protected] = false;
http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.invokescript.aspx 你需要分析頁面結構,找出如何定位的複選框,並使用邁爾斯的方法來檢查/取消JavaScript中的複選框。
這一切看起來都很複雜...... – CodeRedick 2009-11-05 14:08:05
如果你跳過.Net的包裝類並直接調用IE API,會更加複雜。 – 2009-11-05 14:15:09
我的觀點是,一旦你在webbrowser控件中獲得了文檔,就可以直接操作dom對象,而不需要使用javascript。 – CodeRedick 2009-11-05 14:34:20
LONG版本是您必須使用DOM函數來查找要更新的控件的客戶端ID,然後設置它的值。
我也許可以找到適合你一些示例代碼,一旦我得到工作,如果沒人打我吧...
編輯:
基本上所有你需要做的是:
HTMLDocumentClass doc = webBrowserControl.Document as mshtml.HTMLDocumentClass;
HTMLInputElement input = doc.all.item("checkboxID", 0) as HTMLInputElement;
input.value ="false"; //Could be 0, not sure...
//could also be [email protected] = false, sorry I haven't actually used this on a checkbox before... one of these should work though
所以是的,不確定爲什麼有人會通過所有的努力寫一個JavaScript,並調用它,當你可以用3行代碼設置控件的值。
它應該是'input。@ checked = false;'。 使用JS你不必引用mshtml,你可以在一行中做到這一點 - 'this.webBrowser1.Document.InvokeScript(「取消」);'。 – Majkel 2009-11-05 15:41:31
好吧,C#中的一行+ JS中的一行。 – Majkel 2009-11-05 15:42:32
嗯,如果我真的想,我可以把它壓縮成一行C#。 ;)我懷疑實際上將腳本添加到頁面並使用它將最終變得更多。 – CodeRedick 2009-11-05 16:02:28
您可以使用HTML元素的InvokeMember方法來調用DOM事件。在我們的例子中「點擊」。如果你有一個WebBrowser控件而不是你所要做的就是找到這個元素並調用這個方法。
For Each ele As HtmlElement In Me.WebBrowser1.Document.All
If ele.Name = "accept" Then
ele.InvokeMember("click")
End If
Next
在我的示例中,'accept'是複選框元素的名稱。您可以將SetAttribute()用於某些其他控件,但模擬點擊的最佳方法是使用GetAttribute()查找複選框的狀態,如果該複選框設置爲false,則單擊。希望能幫助到你。
簡短回答是「是」。 – CodeRedick 2009-11-05 14:02:45
CHECKED屬性實際上不是布爾型,而是存在或不存在,這可能是爲什麼SetAttribute(「checked」,「false」)失敗。您可能可以完全刪除該屬性。 – Myles 2009-11-05 15:58:55
你可以將它設置爲null,它應該工作:ele.SetAttribute(「checked」,null); – 2012-08-22 05:40:38