Html 让WebBrowser在VB.net中单击一次带有特定类的网页上的按钮
我试图让webbrowser单击网页中的特定按钮: 按钮的html代码类似于Html 让WebBrowser在VB.net中单击一次带有特定类的网页上的按钮,html,vb.net,click,webbrowser-control,getelementsbytagname,Html,Vb.net,Click,Webbrowser Control,Getelementsbytagname,我试图让webbrowser单击网页中的特定按钮: 按钮的html代码类似于,到目前为止,我单击此按钮的代码是: For Each Element As HtmlElement In WebBrowser2.Document.GetElementsByTagName("a") If Element.OuterHtml.Contains("btn btn-large play") Then Element.InvokeMember("click") End If 这是可行的,但它会让网络浏览者一
,到目前为止,我单击此按钮的代码是:
For Each Element As HtmlElement In WebBrowser2.Document.GetElementsByTagName("a")
If Element.OuterHtml.Contains("btn btn-large play") Then
Element.InvokeMember("click")
End If
这是可行的,但它会让网络浏览者一次又一次地点击按钮。你知道我怎样才能做到两次吗?也许就是这样吧?:)
也许就是这样?:)
为什么不尝试检测webbrowser中的元素类型: 源于@ElektroStudios的代码片段,我只是一个粘贴代码而不添加属性的lammer。
稍后,您可以将
MsgBox(“您单击了一个链接”)
替换为某个函数、事件或子函数,然后执行您想要的操作..:D为什么不尝试检测webbrowser中的元素类型:
源于@ElektroStudios的代码片段,我只是一个粘贴代码而不添加属性的lammer。
稍后,您可以将
MsgBox(“您单击了一个链接”)
替换为某个函数、事件或子函数,然后执行您想要的操作..:D如果您已经单击了该项,则足以退出FOR
循环,因此请尝试以下操作:
For Each Element As HtmlElement In WebBrowser2.Document.GetElementsByTagName("a")
If Element.OuterHtml.Contains("btn btn-large play") Then
Element.InvokeMember("click")
Exit For
End If
Next Element
如果您已经单击了该项目一次,就足以退出FOR循环,请尝试以下操作:
For Each Element As HtmlElement In WebBrowser2.Document.GetElementsByTagName("a")
If Element.OuterHtml.Contains("btn btn-large play") Then
Element.InvokeMember("click")
Exit For
End If
Next Element
试试这个:
Public count as integer=0
Private Sub WebBrowser_DocumentCompleted(ByVal sender As System.Object,ByVal e As WebBrowserDocumentCompletedEventArgs) _
Handles WebBrowser1.DocumentCompleted
If count<2 then
For Each Element As HtmlElement In WebBrowser2.Document.GetElementsByTagName("a")
If Element.OuterHtml.Contains("btn btn-large play") Then
Element.InvokeMember("click")
End If
count=count+1
end if
End Sub
公共计数为整数=0
私有子WebBrowser_DocumentCompleted(ByVal发件人作为System.Object,ByVal e作为WebBrowser DocumentCompletedEventArgs)_
处理WebBrowser1.DocumentCompleted
如果计数请尝试以下方法:
Public count as integer=0
Private Sub WebBrowser_DocumentCompleted(ByVal sender As System.Object,ByVal e As WebBrowserDocumentCompletedEventArgs) _
Handles WebBrowser1.DocumentCompleted
If count<2 then
For Each Element As HtmlElement In WebBrowser2.Document.GetElementsByTagName("a")
If Element.OuterHtml.Contains("btn btn-large play") Then
Element.InvokeMember("click")
End If
count=count+1
end if
End Sub
公共计数为整数=0
私有子WebBrowser_DocumentCompleted(ByVal发件人作为System.Object,ByVal e作为WebBrowser DocumentCompletedEventArgs)_
处理WebBrowser1.DocumentCompleted
If count此循环遍历给定文档中的所有元素。通过假设只有一个元素包含OuterHtml文本“btn btn large play”,每次使用此循环时,只会单击一次。从您的代码中,我不知道该循环何时/多少次被使用,但据推测,它位于一个被多次调用的方法中。该循环迭代给定文档中的所有元素。通过假设只有一个元素包含OuterHtml文本“btn btn large play”,每次使用此循环时,只会单击一次。从您的代码中,我不知道该循环何时/多少次被使用,但据推测,它位于一个被多次调用的方法中。如果现在按钮被“一次又一次”单击,则使用您的代码,它将被单击2*(一次又一次):)这似乎不是OP抱怨的问题的解决方案。@varocabas不应该在第二次单击后返回exit the loop?如上所述,问题似乎不是由循环本身引起的,而是由“where”(方法)引起的,该循环似乎被多次调用。如果中断循环或退出该方法,将无法避免再次调用该方法。OP应该解释在什么条件下调用这个循环。@varocarbas或者可能只有几个按钮包含“btn btn大播放”?这也是可能的(一两个或一百个;它是outertext…),但是如果OP没有更好地描述条件,没有办法准确地帮助他。如果现在按钮“一次又一次”被点击,你的代码会被点击2*(一次又一次):)这似乎不是OP抱怨的问题的解决办法。@varocarbas不应该在第二次点击后返回退出循环?如上所述,这个问题似乎不是由循环本身引起的,而是由执行这个循环的“where”(方法)引起的,它似乎被多次调用。如果中断循环或退出该方法,将无法避免再次调用该方法。OP应该解释在什么条件下调用这个循环。@varocarbas或者可能只有几个按钮包含“btn btn大播放”?这也是可能的(一两个或一百个;它是outertext…),但是如果OP没有更好地描述条件,无法准确地帮助他。提供没有作者属性(Me)的代码段违反了SO条款。提供没有作者属性(Me)的代码段违反了SO条款。