我正在尝试点击网页上的按钮。 我有当前的代码:
WebBrowser1.Document.All("load-more").InvokeMember("click")
但是,我还有其他代码可以向下滚动页面,因为整个页面都没有加载,直到你到达底部。 最后,如果你想要加载更多的东西,你可以选择几次到达底部。 您单击以加载更多按钮的ID是“load-more”,但是,该按钮并不总是可用。
那么它是否有可能等到按钮可点击直到它实际点击按钮为止?
我尝试过使用System.Threading.Thread.Sleep(6500)
,但我不能使用它,因为如果我这样做,页面就不会自动向下滚动。
任何人对我如何实现这一目标都有任何想法?
我专注于WebBrowser:
Me.WebBrowser1.Document.Body.Focus()
我向WebBrowser发送了键以滚动:
System.Windows.Forms.SendKeys.Send("{END 5}")
滚动脚本现在看起来像这样:
Dim Wait As Date
Now.AddSeconds(Second)
Wait = Now.AddSeconds(Second).AddSeconds(1)
Do Until Now > Wait
Application.DoEvents() ' Allow windows messages to be processed
Loop
Me.WebBrowser1.Document.Body.Focus()
System.Windows.Forms.SendKeys.Send("{END 5}")
所以基本上,现在,一旦加载了网页,它就会自动向下滚动到底部。
我仍然不知道如何检查按钮是否可点击 - 只有在网页滚动到底部几次后才会显示按钮(每次滚动都会加载更多内容)。
答案 0 :(得分:0)
我发现了如何做到这一点。 这其实很简单! 首先,我有这个代码:
Const Second As Double = 1.0# / (1440.0# * 60.0#)
Dim Wait As Date
Now.AddSeconds(Second)
Wait = Now.AddSeconds(Second).AddSeconds(1)
Do Until Now > Wait
Application.DoEvents() ' Allow windows messages to be processed
Loop
Me.WebBrowser1.Document.Body.Focus()
System.Windows.Forms.SendKeys.Send("{END 5}")
它基本上等了一会儿,连续5次发送“END”键,“END”键只滚动到页面的末尾。
然后我得到了这段代码:
Dim buttonAv = WebBrowser1.Document.GetElementById("load-more")
If buttonAv <> Nothing Then
buttonAv.ScrollIntoView(True)
WebBrowser1.Document.All("load-more").InvokeMember("click")
End If
基本上,我正在制作我要点击的按钮(其ID为“load-more”)为“buttonAv”,然后我检查buttonAv是否在视图中 - 如果不是我滚动到查看,然后单击它。