vb.net - 通过类名获取元素进行点击

标签 vb.net visual-studio-2013

我正在使用 Web 浏览器控件在 VB.NET 中创建一个 Windows 窗体,但无法单击下面的代码。

<input type="Submit" class="btn btnSearch bold include_WidthButton" value="Search">

当通过ID获取元素时我可以点击,但不能通过类名获取元素。请帮助我,谷歌搜索对我没有帮助。

这是我尝试过的:

For Each Element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("btn btnSearch bold include_WidthButton")
    If Element.OuterHtml.Contains("btn btnSearch bold include_WidthButton") Then
        Element.InvokeMember("click")
    End If
Exit For

最佳答案

没有本地函数可以使用网络浏览器文档按类获取元素集合。但是,您可以使用函数创建自己的集合,并使用 document.all 属性循环遍历所有元素。

Function ElementsByClass(document As HtmlDocument, classname As String)
    Dim coll As New Collection
    For Each elem As HtmlElement In document.All
        If elem.GetAttribute("className").ToLower.Split(" ").Contains(classname.ToLower) Then
            coll.Add(elem)
        End If
    Next
    Return coll
End Function

使用方式如下:

Private Sub UpdatBtn_Click(sender As System.Object, e As System.EventArgs) Handles UpdatBtn.Click

    For Each elem As HtmlElement In ElementsByClass(WebBrowser1.Document, "form")
        elem.SetAttribute("className", elem.GetAttribute("className") & " form-control")
    Next

End Sub

我发现您正在尝试将您的集合基于整个 className 而不是单个类,因此您需要稍微修改。

关于vb.net - 通过类名获取元素进行点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36038131/

相关文章:

c# - 代码片段快捷方式并不适用于所有地方

visual-studio-2013 - TF10175 : The My Project team project does not exist

c++ - VC++ : Performance drop x20 when more threads than cpus but not under g++

c# - 有什么工具可以在.NET 程序执行时查看变量的存储位置?是在栈上还是堆上?

vb.net - 如何自定义从字符串数组动态创建的按钮的单击事件?

regex - 6位正则表达式

visual-studio-2010 - 我可以在 Visual Studio 中将设计 Pane 与 XAML Pane 分开吗?

c# - 当我没有按顺序选择复选框时,POST 到 MVC Controller IEnumerable 嵌套模型为空

vb.net:是否可以一次注释掉多于1行的代码?

mysql - MySQL 中的参数化字符串和通配符