【问题标题】:When i'm checking if site uploaded complete in webBrowser DocumentCompleted it's all the in Interactive state what else can i do?当我在 webBrowser DocumentCompleted 中检查网站是否上传完成时,它全部处于交互状态,我还能做什么?
【发布时间】:2015-12-25 00:45:36
【问题描述】:

在构造函数中

webBrowser2.ScriptErrorsSuppressed = true;
webBrowser2.Navigate("http://www.tapuz.co.il/forums/forumpage/393");

然后在 DocumentCompleted 中

void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            while (webBrowser2.ReadyState != WebBrowserReadyState.Complete)
            {
                return;
            }
            HtmlElementCollection items = this.webBrowser2.Document.GetElementsByTagName("span");
            foreach (HtmlElement item in items)
            {
                if (item.GetAttribute("className") == "addMessage")
                {
                   item.InvokeMember("click");
                }
            }
        }

我尝试了 while 循环和没有。

如果由于某种原因没有 while 循环,它会每 2-3 秒一遍又一遍地加载页面。

通过循环,我一直看到 webBrowser2.ReadyState 一直是交互式的。

此外,此站点正在自动刷新。但它永远不会到达“点击”

这是我在 addMessage 按钮上创建 Inspect Element 时看到的:

<div id="SecondLineMenu-sticky-wrapper" class="sticky-wrapper" style="height: 60px;"><div class="SecondLineMenu" id="SecondLineMenu" style="width: 1000px;">
                    <span class="addMessage" onclick="location='http://www.tapuz.co.il/forums/addmsg/393/טבע_ומזג_אוויר/מזג_האוויר'">  | הוספת הודעה</span>

我想点击 addMessage 按钮,但它永远不会到达那里。

我发现这个工作:

bool clicked = false;
        private void webBrowser2_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

            if (this.webBrowser2.Document != null)
            {
                if (clicked == false)
                {
                    HtmlElementCollection items = webBrowser2.Document.GetElementsByTagName("span");
                    foreach (HtmlElement item in items)
                    {
                        if (item.GetAttribute("className") == "addMessage")
                        {
                            item.InvokeMember("click");
                            clicked = true;
                            break;
                        }
                    }
                }
            }
        }

我应该将此添加为解决方案吗?

【问题讨论】:

    标签: c# html .net winforms


    【解决方案1】:
    bool clicked = false;
            private void webBrowser2_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
    
                if (this.webBrowser2.Document != null)
                {
                    if (clicked == false)
                    {
                        HtmlElementCollection items = webBrowser2.Document.GetElementsByTagName("span");
                        foreach (HtmlElement item in items)
                        {
                            if (item.GetAttribute("className") == "addMessage")
                            {
                                item.InvokeMember("click");
                                clicked = true;
                                break;
                            }
                        }
                    }
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 2015-04-16
      • 1970-01-01
      • 2015-02-04
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      相关资源
      最近更新 更多