积极答复者
打开百度首页,模拟点击网页上的所有的链接

问题
-
namespace webbrowser点击 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { webBrowser1.Navigate(textBox1.Text); webBrowser1.ScriptErrorsSuppressed = true; } } private bool zhuantia; private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) { zhuantia = true; } else { zhuantia = false; } } private void button1_Click(object sender, EventArgs e) { timer1.Enabled = true; } private void onClick() { if (zhuantia) { HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("A"); foreach (HtmlElement link in links) { link.InvokeMember("click"); } } } private void webBrowser1_NewWindow(object sender, CancelEventArgs e) { e.Cancel = true; } private void timer1_Tick(object sender, EventArgs e) { onClick(); } } }
上面的代码可以模拟点击,可能是点击速度太快了webbrowser窗体只显示点击了底部的一个链接,请问我要实现打开百度首页,然后隔5秒依次点击网页上的链接,并且在窗体显示,这个要怎么实现。现在新闻,贴吧这些没有模拟点击成功。请求解决的方法。
答案
-
你可以打开百度首页后,在webBrowser1_DocumentCompleted事件里面获取所有链接并保存下来,可以保存到一个queue里面,比如说,假如那个获取链接的方法是正确的:
HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("A"); foreach (HtmlElement link in links) { //保存链接到private的queue里 }
然后,再在timer里面每隔5秒在保存的链接queue里面dequeue出一个链接,再点击就可以了。
- 已建议为答案 ThankfulHeartModerator 2014年1月30日 2:34
- 已标记为答案 CaillenModerator 2014年2月6日 9:30
全部回复
-
你点击了第一个链接,页面就跳转了,无法点其他链接了。你可以记住点过的link, 重新加载旧页面,再点其他的link
-
你可以打开百度首页后,在webBrowser1_DocumentCompleted事件里面获取所有链接并保存下来,可以保存到一个queue里面,比如说,假如那个获取链接的方法是正确的:
HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("A"); foreach (HtmlElement link in links) { //保存链接到private的queue里 }
然后,再在timer里面每隔5秒在保存的链接queue里面dequeue出一个链接,再点击就可以了。
- 已建议为答案 ThankfulHeartModerator 2014年1月30日 2:34
- 已标记为答案 CaillenModerator 2014年2月6日 9:30
-
你可以考虑把所有链接保存下来,放在String[]中,然后用for语句对每一个链接新建一个webBrowser来打开网页。
建议放入List<string>中,因为多少可能不固定;)
或者用HtmlElementCollection的Count属性开辟数组后存放。
ASP.NET Questions
Other Discussions
FreeRice Donate
Issues to report
Free Tech Books Search -
你可以考虑把所有链接保存下来,放在String[]中,然后用for语句对每一个链接新建一个webBrowser来打开网页。
建议放入List<string>中,因为多少可能不固定;)
或者用HtmlElementCollection的Count属性开辟数组后存放。
ASP.NET Questions
Other Discussions
FreeRice Donate
Issues to report
Free Tech Books Search