1

WebブラウザでWebページ内の特定のボタンをクリックさせようとしています:

ボタンのhtmlコードは次のようなもの<a class="btn btn-large play">で、これまでにこのボタンをクリックするコードは次のとおりです。

For Each Element As HtmlElement In WebBrowser2.Document.GetElementsByTagName("a")
If Element.OuterHtml.Contains("btn btn-large play") Then
Element.InvokeMember("click")
End If

これは機能しますが、Web ブラウザがボタンを何度もクリックするようにします。どうすれば2回しかできないのでしょうか?

4

4 に答える 4

1

また、Web ブラウザーで要素の種類を検出しようとしないのはなぜですか。

@ElektroStudios のコード スニペット。

Dim Document As HtmlDocument

Private Sub WebBrowser_DocumentCompleted(ByVal sender As System.Object, ByVal e As WebBrowserDocumentCompletedEventArgs) _
Handles WebBrowser1.DocumentCompleted

    Document = sender.Document
    AddHandler document.Click, New HtmlElementEventHandler(AddressOf Document_Click)

End Sub

Private Sub Document_Click(ByVal sender As Object, ByVal e As HtmlElementEventArgs)

    Select Case Document.ActiveElement.TagName.ToLower
        Case "button" : MsgBox("You've clicked a button")
        Case "input" : MsgBox("You've clicked a input")
        Case "a" : MsgBox("You've clicked a link")
        Case Else
    End Select

End Sub

MsgBox("You've clicked a link")後で、いくつかの関数、イベント、またはサブに置き換えて、必要なことを行うことができます.. :D

于 2013-10-19T08:21:12.220 に答える
1

これを試して:

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
于 2016-10-21T19:33:21.670 に答える
0

アイテムを一度クリックしたら、ループを終了するのに十分な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 
于 2013-10-19T09:47:01.083 に答える