我有一个代码,我希望它能在中间的某个地方等待,直到前进.在WebBrowser1.Document.Window.DomWindow.execscript("checkPasswordConfirm();","JavaScript")之后,我希望它等待.5秒,然后执行剩下的代码.
WebBrowser1.Document.Window.DomWindow.execscript("checkPasswordConfirm();","JavaScript")
Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
For Each webpageelement As HtmlElement In allelements
If webpageelement.InnerText = "Sign Up" Then
webpageelement.InvokeMember("click")
End If
Next
Run Code Online (Sandbox Code Playgroud)
Sam*_*Sam 40
您需要使用System.Threading.Thread.Sleep(毫秒数).
WebBrowser1.Document.Window.DomWindow.execscript("checkPasswordConfirm();","JavaScript")
Threading.Thread.Sleep(500) ' 500 milliseconds = 0.5 seconds
Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
For Each webpageelement As HtmlElement In allelements
If webpageelement.InnerText = "Sign Up" Then
webpageelement.InvokeMember("click")
End If
Next
Run Code Online (Sandbox Code Playgroud)
我认为这个问题很老,但我提供了另一个答案,因为它对其他人有用:
thread.sleep不是一个好的等待方法,因为通常它会冻结软件直到完成它的时间,这个函数更好:
Imports VB = Microsoft.VisualBasic
Public Sub wait(ByVal seconds As Single)
Static start As Single
start = VB.Timer()
Do While VB.Timer() < start + seconds
System.Windows.Forms.Application.DoEvents()
Loop
End Sub
Run Code Online (Sandbox Code Playgroud)
此功能在没有冻结软件的情况下等待特定时间,但会增加CPU使用率,但是下面的功能不仅不会冻结软件,还会增加CPU使用率:
Private Sub wait(ByVal seconds As Integer)
For i As Integer = 0 To seconds * 100
System.Threading.Thread.Sleep(10)
Application.DoEvents()
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
小智 5
Imports VB = Microsoft.VisualBasic
Public Sub wait(ByVal seconds As Single)
Static start As Single
start = VB.Timer()
Do While VB.Timer() < start + seconds
System.Windows.Forms.Application.DoEvents()
Loop
End Sub
Run Code Online (Sandbox Code Playgroud)
%20+ 高 CPU 使用率 + 无延迟
Private Sub wait(ByVal seconds As Integer)
For i As Integer = 0 To seconds * 100
System.Threading.Thread.Sleep(10)
Application.DoEvents()
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
%0.1 CPU 使用率 + 高延迟
创建一个计时器,当它滴答作响时,它会激活您想要的任何代码。确保计时器代码中的第一行是:
timer.enabled = false
Run Code Online (Sandbox Code Playgroud)
将计时器替换为您命名的计时器。
然后在您的代码中使用它:
WebBrowser1.Document.Window.DomWindow.execscript("checkPasswordConfirm();","JavaScript")
timer.enabled = true
Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
For Each webpageelement As HtmlElement In allelements
If webpageelement.InnerText = "Sign Up" Then
webpageelement.InvokeMember("click")
End If
Next
Run Code Online (Sandbox Code Playgroud)