vb.net - 单击一个按钮,多个按钮具有相同的HTML代码

时间:2014-10-19 11:25:48

标签: vb.net visual-studio

刚刚加入这里并开始学习vb.net。我四处搜寻,但没有碰到任何东西。在Visual Studio中使用Vb.net和WebBrowser。我有一个网页,上面有我要点击的按钮。该按钮显示9次,代码相同。所以基本上相同的按钮会多次显示。当我在vb.net中创建一个函数来单击按钮时,它会立即打开所有9个。我想一次只打开一个。我知道在imacros你可以通过分配位置1,位置2等来解决这个问题所以它点击第一个发生的,然后是第二个,等等。有没有办法在vb.net中这样做?谢谢。

以下是点击按钮的代码

Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
TextBox7.Text = TextBox7.Text + 1

theElementCollection = WebBrowser1.Document.GetElementsByTagName("input")
For Each curElement As HtmlElement In theElementCollection
If InStr(curElement.GetAttribute("value").ToString, "Visit") Then

    curElement.InvokeMember("Click")
    curElement.InvokeMember("MouseDown")
    curElement.InvokeMember("MouseUp")
    curElement.InvokeMember("OnClick")
    curElement.Focus()
End If

Next
Timer2.Interval = TextBox6.Text

End Sub

这是按钮的检查元素信息:

<input class="submit" value="Visit" style="width: 110px; height: 80px; border-radius: 40px; font-size: 27;" type="submit">

1 个答案:

答案 0 :(得分:0)

在上面的评论中,您声明:

  

这正是我试图做的,是为了调用其中一个点击。我不明白这是怎么可能的

嗯,问题中发布的代码是在所有匹配元素的循环中调用click事件:

theElementCollection = WebBrowser1.Document.GetElementsByTagName("input")
For Each curElement As HtmlElement In theElementCollection
    ' invoke the click handler
Next

如果您只想在一个元素上调用click事件而不是所有元素,那么请不要使用循环:

theElementCollection = WebBrowser1.Document.GetElementsByTagName("input")
If theElementCollection.Count > 0
    ' invoke the click handler on the first element
End If

但是,由于查询返回的所有元素都不是您要查找的元素,因此当前代码的最快方法可能是在第一个目标之后引入Exit For语句达到了元素。像这样:

theElementCollection = WebBrowser1.Document.GetElementsByTagName("input")
For Each curElement As HtmlElement In theElementCollection
    If InStr(curElement.GetAttribute("value").ToString, "Visit") Then
        curElement.InvokeMember("Click")
        curElement.InvokeMember("MouseDown")
        curElement.InvokeMember("MouseUp")
        curElement.InvokeMember("OnClick")
        curElement.Focus()
        Exit For ' right here
    End If
Next

这样,在第一个匹配元素被点击后,循环将停止迭代&#34;。