none
打开百度首页,模拟点击网页上的所有的链接 RRS feed

  • 问题

  • 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秒依次点击网页上的链接,并且在窗体显示,这个要怎么实现。现在新闻,贴吧这些没有模拟点击成功。请求解决的方法。
    2014年1月24日 23:08

答案

  • 你可以打开百度首页后,在webBrowser1_DocumentCompleted事件里面获取所有链接并保存下来,可以保存到一个queue里面,比如说,假如那个获取链接的方法是正确的:

    HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("A");
                    foreach (HtmlElement link in links)
                    {
                        //保存链接到private的queue里
                    }

    然后,再在timer里面每隔5秒在保存的链接queue里面dequeue出一个链接,再点击就可以了。

    2014年1月26日 8:13

全部回复