Javascript GetElementsByClassName 变量位置

Javascript GetElementsByClassName Variable Position

将尽量做到简洁。

使用 VB.Net 到 运行 Javascript 中的浏览器控件循环遍历网页上的元素。

主要 工作,这将解决我最后几周的问题,我非常感谢这里的指导。

到目前为止:

    Dim s As String = browser.ExecuteJavascriptWithResult("document.getElementsByTagName('li').length")

    If s <> "undefined" Then

        Dim iCount As Integer = CInt(s)

        For i As Integer = 0 To iCount - 1

            Dim classcounter As String = browser.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere').length")

            Dim iCount2 As Integer = CInt(classcounter)

            For i2 As Integer = 0 To iCount2 - 1
                MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[0].textContent"))
                MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[1].textContent"))
                MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[2].textContent"))
            Next


        Next
    End If

这行得通。它循环遍历 li 标签并为我提供我期望的数据。结果的数量可能会有所不同,但我认为这样的方法会起作用:

  For i2 As Integer = 0 To iCount2 - 1
            MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[i2].textContent"))
        Next

我只是用变量替换硬编码整数。我认为那将是简单的部分。

但它显示未定义。即使我给它一个变量,它是 0、1 或 2 的整数,它也显示未定义。 [0] 有效,但 testcounter = 0 而 [testcounter] 无效。

请有人告诉我这是一个简单的语法问题还是什么?如果有人能指出正确的方向,我将不胜感激。

我不太了解VB.net,但你应该不会串联

"document.getElementsByClassName('classnamehere')[" + i2 + "].textContent"

否则你最终会得到这个字符串

"document.getElementsByClassName('classnamehere')[i2].textContent"

不用原样替换 i2

MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[i2].textContent"))