Visual Basic - 等待网页加载不起作用

时间:2017-06-27 16:10:04

标签: vb.net browser sleep

我正在尝试加载网站,等待它完全加载,然后在加载时显示一个消息框。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    WebBrowser1.Navigate("https://www.google.com")
    Do Until WebBrowser1.ReadyState = 4
        Threading.Thread.Sleep(100)
    Loop
    MsgBox("Loaded")
End Sub

然而,当我使用它时,没有任何事情发生,尽管等待大约30秒。如果我删除所有内容,请留下......

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    WebBrowser1.Navigate("https://www.google.com")
End Sub

...,它加载得很好。

2 个答案:

答案 0 :(得分:0)

UI不会加载页面,因为你已经在无限(或至少接近无限)的循环中绑定了UI线程。

而不是等待以便浏览器加载,而是异步响应event of the browser loading。像这样:

// "Some text\r\nSome text\r\nSome text\r\nSome text\r\nPage 1 to 20"
string divText = Driver.FindElement(By.Id("tabletransaction")).Text;

// ""Some text\r\nSome text\r\nSome text\r\nSome text"
string tableText = Driver.FindElement(By.Id("ticketransaction")).Text;

// "Page 1 to 20"
string remainingText = divText.Replace(tableText, string.Empty).Trim();

每当您发现自己想要“暂停”某个应用程序以等待某些事情发生时,您很可能需要在发生某事时订阅事件

答案 1 :(得分:0)

如果我看到这是正确的,那么由于你在每次运行支票时都使主线程停止。你能不能在DocumentCompleted事件上添加一个事件处理程序?