- 从工具箱中,将Webbrowser控件拖入Form窗口。
- 在Webbrowser控件的属性对话框中,将Url属性设置为对应的网址
- 然后在form窗体中双击webbrowser控件,在默认的webBrowser_DocumentCompleted函数中添加如下代码
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// 根据id找到对应的元素
HtmlElement htmlEle = webBrowser.Document.GetElementById("sign-in");
if (htmlEle != null)
{
// 激活html元素的 click 成员
htmlEle.InvokeMember("click");
}
}
C# webbrowser 模拟点击无ID 无name的html元素按钮
好久没有写过日志了,今天写一点自己在webbrowser这个控件上的研究。前前后后断断续续研究过这个控件很久,无非是想做个自动点击的工具,本人编程底子薄,纯粹也就是自己自娱自乐吧。
首先页面:http://weibo.com/u/2546043520 (不一定可以访问到)
加关注那个按钮的html代码是:
<a class="W_btn_b" title="加关注" action-type="follow" action-data="uid=2546043520&fnick=黄力勋弘贵" href="javascript:void(0);"><span><img class="icon_add addbtn_g" src="http://img.t.sinajs.cn/t4/style/images/common/transparent.gif"><em class="vline"></em><img src="http://img.t.sinajs.cn/t4/style/images/common/transparent.gif" class="icon_add addbtn_b">加关注</span></a>
============
建议大家用chrome来分析网页的元素代码。
这个按钮没有ID,也没有name,所以不是特别好处理,所以我的思路是遍历所有的元素,然后根据其他项来匹配到这个按钮。如果有ID,或者name就可以用这个方法: webBrowser1.Document.GetElementById("login_submit_btn")
我的代码:
private void button1_Click(object sender, EventArgs e)
{
HtmlDocument document = this.webBrowser1.Document;//获取控件中的html文档,类似于网页中的document对象。
HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("a");//根据标签<a>来遍历元素。
foreach (HtmlElement em in elems) //遍历所有元素
{
if (em.GetAttribute("title") == "加关注") //根据title来匹配,因为加关注只有一个按钮
{
em.InvokeMember("click");
}
}
}
=================
其他的类似没有ID,没有name都可以按照这样的方法来处理。
判断网页是否加载完毕
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
webBrowser1.Document.GetElementById("btnLogin").InvokeMember("onclick");
}
ok