excel - 使用 VBA 和 selenium 抓取时从部分 id 中获取全部价值
问题描述
我正在(试图)从一个有很多
<div id="CustID_1234567"[...]>
<div class="logged">2019-09-27</div>
</div>
<div id="CustID_2345678"[...]>
<div class="logged">2019-09-26</div>
</div>
我正在尝试将所有客户 ID 收集到一个数组中以进行进一步处理,但我很难找到使用 selenium 获取完整 ID 的正确代码。
我在循环代码时尝试了 FindElementsByXPath 的不同变体,但我不知道如何获取 ID 文本
Customers(a)=bot.FindElementsByXPath("//*[contains(@id, 'CustID_')]").Item(a).ID
Customers(a)=bot.FindElementsByXPath("//*[contains(@id, 'CustID_')]").Item(a).text
第一个(.id)以错误结尾,但最后一个(.text)得到文本(duh),“2019-09-27”和“2019-09-26”,所以我想我不是那么远离真正的解决方案。
请问有什么建议吗?
解决方案
有一种更快的方法(比 xpath 更快),使用 css 选择器使用正确的语法添加到数组。这也更准确,因为它匹配开头而不是包含。
Dim elem As Object, elems As Object
Set elems = bot.FindElementsByCss("[id^=CustID_]")
For each elem in elems
Debug.Print elem.Attribute("id")
Next
存储在数组中
Dim elem As WebElement, elems As WebElements, i As Long, arr()
Set elems = bot.FindElementsByCss("[id^=CustID_]")
ReDim arr(1 To elems.Count)
For Each elem In elems
i = i + 1
arr(i) = elem.Attribute("id")
Next
推荐阅读
- javascript - 如何使构造函数中的方法引用其参数?
- python - Scrapy:从获取请求中抓取数据
- android - Android Chrome WebView.draw(canvas) 不绘制 HTML 5 画布
- .net-core - 当迁移在另一个项目中使用 cli 时,我应该如何添加新的迁移?
- javascript - 如何获取对象的特定值?
- html - 在点击事件上传递 ngfor 索引
- r - 如何将格式为 [word|NN -0.3 word2 word3] 的 txt 转换为 df,其中所有单词在单独的行中加上值
- ansible - ansible:使用 parted 模块创建 16 个分区时出错
- html - 如何在outlook中垂直对齐图像旁边的文本
- typescript - 按字符串索引从 inxex.ts 导出的元素