Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用VBA和selenium进行刮削时从部分id获取完整值_Excel_Vba_Selenium Webdriver_Web Scraping - Fatal编程技术网

Excel 使用VBA和selenium进行刮削时从部分id获取完整值

Excel 使用VBA和selenium进行刮削时从部分id获取完整值,excel,vba,selenium-webdriver,web-scraping,Excel,Vba,Selenium Webdriver,Web Scraping,我正在(试图)从一个有很多信息的内联网页面中获取信息 <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)以错误结尾,但最

我正在(试图)从一个有很多信息的内联网页面中获取信息

<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)以错误结尾,但最后一个(.text)得到了文本(duh),“2019-09-27”和“2019-09-26”,所以我想我离真正的解决方案并不远

有什么建议吗?

从检索到的元素中获取“id”属性以获取完整值

bot.FindElementsByXPath("//*[contains(@id, 'CustID_')]").Item(a).attribute("id")
有一种更快的方法(比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

您的xpath是正确的。它应该返回所有元素。如果您试图获取fill cust_id,那么您应该尝试获取id属性。。像这样的。。。Xpath(“”.item(a).getAttribute(“id”).attribute(“id”)完成了“bot.FindElementsByXPath(“/*[contains(@id,'CustID')]”)的技巧。item(a).attribute(“id”)”谢谢。我可以请你给我一个答案,这样我就可以把它标记为正确答案吗?完成了。很高兴能帮忙!!!
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