尽量使其尽可能简洁。
使用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]没有。
请有人告诉我这是一个简单的语法问题或什么?如果有人能指出我正确的方向,我真的很感激。
答案 0 :(得分:1)
我对VB.net了解不多,但不应该连接
"document.getElementsByClassName('classnamehere')[" + i2 + "].textContent"
否则你只会得到这个确切的字符串
"document.getElementsByClassName('classnamehere')[i2].textContent"
没有用i2替换i2
MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[i2].textContent"))