首页 > 解决方案 > 使用带有 SeleniumBasic 的 Excel VBA 的 Web 自动化。我无法访问我找到的值

问题描述

我正在尝试加载我找到的消息,WDrv.FindElementsByXPath("//*[@id='divMessageLines']/div")但我不知道如何访问我找到的各个值。每次搜索都有未知数量的值。

HTML 段是: 在此处输入图像描述

在这个例子中,如果我做一个 .count 我有 2 个匹配的元素:

Dim cntr As Integer
cntr = WDrv.FindElementsByXPath("//*[@id='divMessageLines']/div").Count
‘cntr = 2

我可以使用 div 1和 div[2]访问这两个值中的每一个。这很好,但并不总是有两个值:

cntr = WDrv.FindElementsByXPath("//*[@id='divMessageLines']/div[1]").Count
‘cntr = 1

如果我可以使用变量,我可以遍历所有元素。但它似乎不喜欢那样。如果我可以用例如 div[i] 替换 div 1和 div[2] 那就太好了,但是当我尝试这个时,cntr 总是等于 0,所以我认为它不起作用:

Cntr = WDrv.FindElementsByXPath("//*[@id='divMessageLines']/div[i]").Count
‘cntr = 0

我有这个,但它什么也不做并停止运行程序(没有错误消息):

Dim div As TableElement
Set div = WDrv.FindElementsByXPath("//*[@id='divMessageLines']/div")

所以,我不确定如何访问各个元素,有没有办法?

标签: htmlvbaseleniumwebautomation

解决方案


怎么样的东西

Dim itm

For Each itm in WDrv.FindElementsByXPath("//*[@id='divMessageLines']/div")
    'do something with itm
    Debug.Print itm.Text ' for example
Next itm

推荐阅读