好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

c# webBrowser中操作网页元素全攻略

1、获取非input控件的值:

webBrowser1.Document.All["控件ID"].InnerText;

或webBrowser1.Document.GetElementById("控件ID").InnerText;

或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");

2、获取input控件的值:

webBrowser1.Document.All["控件ID"].GetAttribute("value");;

或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");

3、给输入框赋值:

webBrowser1.Document.GetElementById("控件ID").SetAttribute("value", "控件值");

4、CheckBox选中:

webBrowser1.Document.GetElementById("控件ID").SetAttribute("Checked", "true");

5、触发select事件

select赋值:

webBrowser1.Document.GetElementById("控件ID").SetAttribute("selected", "selected");

webBrowser1.Document.GetElementById("控件ID").SetAttribute("value", "控件值");

触发事件:

1)webBrowser1.Document.GetElementById("控件ID").SetAttribute("selectedIndex", “选项序号”);

2)HtmlElement selScript = doc.CreateElement("script");

  selScript.SetAttribute("type", "text/javascript");

/注释/// ajax//

 ///selScript.SetAttribute("text", "function _seloption(){$.ajax({url:'http://ncp.nifdc.org.cn/AjaxHandler/GetFoodTypeThird.ashx',type:'get',data:{parent_id:'948'},success:function(data){if(data!=null){$('#slt_food_type_third').empty();$('#slt_food_type_third').append(data);},complete:function(){}});}");

/注释 ajax/

  selScript.SetAttribute("text", "function _seloption(){$('#" + idname + "').trigger('change')}"); HtmlElement head = doc.Body.AppendChild(selScript);

    doc.InvokeScript("_seloption");

6、根据已知有ID的元素操作没有ID的元素:

HtmlElement btnDelete = webBrowser1.Document.GetElementById(passengerId).Parent.Parent.Parent.Parent.FirstChild.FirstChild.Children[1].FirstChild.FirstChild;

根据Parent,FirstChild,Children[1]数组,多少层级的元素都能找到。

7、获取Div或其他元素的样式:

webBrowser1.Document.GetElementById("addDiv").Style;

8、直接执行页面中的脚本函数,带动态参数或不带参数都行:

Object[] objArray = new Object[1];

 objArray[0] = (Object)this.labFlightNumber.Text;

 webBrowser1.Document.InvokeScript("ticketbook", objArray);

 webBrowser1.Document.InvokeScript("return false");

9、自动点击、自动提交:

HtmlElement btnAdd = doc.GetElementById("addDiv").FirstChild;

btnAdd.InvokeMember("Click");

10、自动赋值,然后点击提交按钮的时候如果出现脚本错误或一直加载的问题,一般都是点击事件执行过快,这时需要借助Timer控件延迟执行提交按钮事件:

this.timer1.Enabled = true;

this.timer1.Interval = 1000 * 2;

private void timer1_Tick(object sender, EventArgs e)

         {

             this.timer1.Enabled = false;

             ClickBtn.InvokeMember("Click");//执行按扭操作

         }

11、屏蔽脚本错误:

将WebBrowser控件ScriptErrorsSuppressed设置为True即可

12、自动点击弹出提示框:

方法一:通过设置Webbrowser的属性来实现

将WebBrowser控件ScriptErrorsSuppressed设置为True即可

C# WebBrowser自动点击弹出提示框

方法二:通过控制webbrowser加载后就点击掉,以达到效果

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { 

      IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;

      vDocument.parentWindow.execScript("function confirm(str){return true;} ", "javascript"); 

      vDocument.parentWindow.execScript("function alert(str){return true;} ", "javaScript");

}

方法三:在页面加载完成后自动关闭,与方法二大体相同

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){  

IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;  

vDocument.parentWindow.execScript("function confirm(str){return true;} ", "javascript"); 

vDocument.parentWindow.execScript("function alert(str){return true;} ", "javaScript");

}

13、获取网页中的Iframe,并设置Iframe的src

HtmlDocument docFrame = webBrowser1.Document.Window.Frames["mainFrame"].Document;

HtmlDocument docFrame = webBrowser1.Document.All.Frames["mainFrame"].Document;

docFrame.All["mainFrame"].SetAttribute("src", "http://www.baidu.com/");

14、网页中存在Iframe的时候webBrowser1.Url和webBrowser1_DocumentCompleted中的e.Url不一样,前者是主框架的Url,后者是当前活动框口的Url。

15、让控件聚焦

 this.webBrowser1.Select();

 this.webBrowser1.Focus();

 doc.All["TPL_password_1"].Focus();


查看更多关于c# webBrowser中操作网页元素全攻略的详细内容...

  阅读:88次