问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用C#的webBrowser模拟点击页面上的标签9

发布网友 发布时间:2024-01-24 11:36

我来回答

2个回答

热心网友 时间:2024-08-21 05:43

C#中的WebBrowser控件的使用
0、常用方法

Navigate(string urlString):浏览urlString表示的网址
Navigate(System.Uri url):浏览url表示的网址
Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders): 浏览urlString表示的网址,并发送postData中的消息
//(通常我们登录一个网站的时候就会把用户名和密码作为postData发送出去)
GoBack():后退
GoForward():前进
Refresh():刷新
Stop():停止
GoHome():浏览主页
WebBrowser控件的常用属性:
Document:获取当前正在浏览的文档
DocumentTitle:获取当前正在浏览的网页标题
StatusText:获取当前状态栏的文本
Url:获取当前正在浏览的网址的Uri
ReadyState:获取浏览的状态
WebBrowser控件的常用事件:
DocumentTitleChanged,
CanGoBackChanged,
CanGoForwardChanged,
DocumentTitleChanged,
ProgressChanged,
ProgressChanged

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、给输入框赋值:
//输入框
user.InnerText = "myname";
password.InnerText = "123456";
webBrowser1.Document.GetElementById("password").SetAttribute("value", "Welcome123");

4、下拉、复选、多选:

//下拉框:
secret.SetAttribute("value", "question1");
//复选框
rememberme.SetAttribute("Checked", "True");
//多选框
cookietime.SetAttribute("checked", "checked");

5、根据已知有ID的元素操作没有ID的元素:
HtmlElement btnDelete = webBrowser1.Document.GetElementById(passengerId).Parent.Parent.Parent.Parent.FirstChild.FirstChild.Children[1].FirstChild.FirstChild;

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

6、获取Div或其他元素的样式:
webBrowser1.Document.GetElementById("addDiv").Style;

7、直接执行页面中的脚本函数,带动态参数或不带参数都行:
Object[] objArray = new Object[1];
objArray[0] = (Object)this.labFlightNumber.Text;
webBrowser1.Document.InvokeScript("ticketbook", objArray);
webBrowser1.Document.InvokeScript("return false");

8、自动点击、自动提交:
HtmlElement btnAdd = doc.GetElementById("addDiv").FirstChild;
btnAdd.InvokeMember("Click");

9、自动赋值,然后点击提交按钮的时候如果出现脚本错误或一直加载的问题,一般都是点击事件执行过快,这时需要借助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");//执行按扭操作
}

10、屏蔽脚本错误:
将WebBrowser控件ScriptErrorsSuppressed设置为True即可

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

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");//弹出提示
}

WebBrowser页面加载完毕之后,在页面中进行一些自动化操作的时候弹出框的自动点击(屏蔽)

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");//弹出提示
//下面是你的执行操作代码
}

12、获取网页中的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/");

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

14、让控件聚焦
this.webBrowser1.Select();
this.webBrowser1.Focus();
doc.All["TPL_password_1"].Focus();

15、打开本地网页文件
webBrowser1.Navigate(Application.StartupPath + @"\Test.html");

16、获取元素、表单

//根据Name获取元素
public HtmlElement GetElement_Name(WebBrowser wb,string Name)
{
HtmlElement e = wb.Document.All[Name];
return e;
}

//根据Id获取元素
public HtmlElement GetElement_Id(WebBrowser wb, string id)
{
HtmlElement e = wb.Document.GetElementById(id);
return e;
}

//根据Index获取元素
public HtmlElement GetElement_Index(WebBrowser wb,int index)
{
HtmlElement e = wb.Document.All[index];
return e;
}

//获取form表单名name,返回表单
public HtmlElement GetElement_Form(WebBrowser wb,string form_name)
{
HtmlElement e = wb.Document.Forms[form_name];
return e;
}

//设置元素value属性的值
public void Write_value(HtmlElement e,string value)
{
e.SetAttribute("value", value);
}

//执行元素的方法,如:click,submit(需Form表单名)等
public void Btn_click(HtmlElement e,string s)
{

e.InvokeMember(s);
}

热心网友 时间:2024-08-21 05:43

遍历元素,判断InnerText为“官方标配”,找到元素后,再模拟点击;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
做过两次人流到现在都三四年了,现在可以再做人流吗?如果做可以不告诉医... 劳荣枝被执行死刑,死刑是如何执行的? 怎樣才能最快最好的去除黑眼圈? G-LOC是指什么? ...Information Service”缩写,其在民航领域的应用及创新变革 "EEBA"缩写代表的紧急逃生呼吸器在航空领域中的应用如何? 全屋整装与全屋定制有什么区别?如果想加盟选哪一种比较好呢? 本人想做开家医疗器械店,请问中国较大的医疗器械批发市场在哪里?_百度... ...我是跑销售的(医疗器械类) 我跟的一家医院里部分管事的人员职务有... 上次我去北园大街的时候看见一家医疗器械正在搞活动,槐荫区这边不知有... 请教.net关于webbrowser控件模拟点击超链接 德拉玛品牌档次怎么样 网页上的文字不能复制怎么办1272 如何复制网页上不能选中的文字?51 如何复制网页中不能复制的文字1791 网页中的内容不能复制粘贴如何解决618 我的电脑在打开HTML网页时无法选择文本,不能对文本进行复制... 买了一包火鸡面放了两包料,竟然不辣还带甜,是不是买到了假货?_百度... 如何复制某些网页上不能复制的文档?262 安义到南昌西站多少时间一班 qq消息免打扰功能对方知道吗? 14周岁打架公安局能留案底吗 屏幕使用时间怎么删除历史纪录? ...电脑,创建Microsoft账户,卡在这一步很长时间,怎么办,是这步本来就... 电脑提示“已创建新任务,但可能不能运行,因为无法设置账户信息... 怎样使qq扩列宣言的部分不出现在页面上? 为什么qq扩列宣言保存了就不见?1 怎么关闭QQ扩列909 我以前QQ号里面有扩列,为什么扩列功能突然消失了?是不是我哪...5 我以前QQ号里面有扩列,为什么扩列功能突然消失了?是不是我哪...14 科目汇总表是什么意思 广州去黄石大冶小雷山风景区路费多少 ...1.结合语境,说说下列词语的含义 怡然的种种 最柔软的角落 2.分析... 都说火狐浏览器开源,开源是什么意思?11 资产交换过程中的会计分录(可加分,求步骤) 中学生的情绪具有什么特点? 如何用delphi做一个简单的图片浏览器 如何用Delphiz做简单的Gecko浏览器1 delphi 如何用DELPHI编程实现打开浏览器进入一个网... 南昌航空大学那边冷不冷啊?冬天最低多少度?夏天最高多少? 常州哪里有薄膜开关厂啊、 广州最好最优质的薄膜开关厂家有哪些?4 哪些牌子PET能用作薄膜开关1 谁能告知下薄膜开关插头连接器有哪些 苏州有哪些工厂生产薄膜开关 多效降膜蒸发器?1 滚轮架??12 翻滚台??10 摩托车机油多久更换一次? 梦奇是龙猫吗