等待WebBrowser中的URL加载C#

时间:2015-02-02 01:34:16

标签: browser c# wait

我正在制作一个自动以批量形式重新发布Craigslist帖子的程序。

我正在执行一个名为arrayTest()的方法,其中包含一行webBrowser1.Navigate(urls[i]);。这将从数组中获取一个URL并让webBrowser1打开它。执行该操作后,将调用clickRepost();方法。此方法模拟按钮单击。但该方法在webBrowser1完成打开URL之前执行。

我需要帮助的是告诉程序等待webBrowser1完成打开URL,然后再转到下一个方法。

到目前为止我尝试了什么:

Task t = Task.Run(() => {
    webBrowser1.Navigate(urls[i]);
})
t.wait();
clickRepost();

这仍然导致clickRepost()不允许webBrowser1完成加载网址。我还尝试在调用方法之间添加System.Threading.Thread.Sleep(5000),但是在Java中这样做,它只关闭x-Seconds的程序。

这是我的计划的一部分,实际上是我遇到的唯一问题。

private void arrayTest()
    {
        String[] urls = CLLinks.Text.Split('\n');
        for (int i = 0; i < urls.Length; i++)
        {
            log.AppendText("Opening Url...\n");
            webBrowser1.Navigate(urls[i]);
            log.AppendText("Reposting...\n");
            clickRepost();
            log.AppendText("Checking Completion...");
            webBrowser1.Navigate(urls[i]);
            completionCheck();
        }
    }

    private void CLRenBtn_Click(object sender, EventArgs e)
    {
        arrayTest();
    }

    private void completionCheck()
    {
        HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("input");

        foreach (HtmlElement item in col)
        {
            if (!(item.GetAttribute("value") == "Renew this Posting"))
            {
                log.AppendText("Renew Posting does not exist");
            }
            else
            { }
        }
    }

    private void clickRepost()
    {
        HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("input");

        foreach (HtmlElement item in col)
        {
            if (item.GetAttribute("value") == "Renew this Posting")
            {
                item.InvokeMember("click");
            }
            else
            {}
        }
    }

CLRenBtn_Click我按下表单上的按钮开始重新发布。 arrayTest()将更改为更相关的名称。当时我只是测试这是否有效。我正计划合并clickRepost()completionCheck(),因为他们做同样的事情。

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

找到答案! C# how to wait for a webpage to finish loading before continuing

对我有用,但现在我的小问题是,当我开始重新发布时。它跳过数组中的第一个url并发布后面的url。