gpt4 book ai didi

excel - 如何使用 Selenium 包装器从带有 vba 的 html 中获取特定元素

转载 作者:行者123 更新时间:2023-12-04 22:29:44 26 4
gpt4 key购买 nike

如何使用带有 Selenium 包装器的 vba 从 html 中调用表格的第 8 个单元格?我正在尝试将这些扣押的日期打印到 Excel 中的单元格中。这是一个示例,其中搜索返回了 3 次在 3 个不同日期被扣押的车辆。

查看源代码:https://www.autoreturn.com/indianapolis-in/find-vehicle/results

我尝试了几种不同的 .Findelement

Sheets("VinCheck").Cells(i, "D").Value = chromeDriver.FindElementByClass("input-item").Text

但似乎没有任何效果。这只是返回一个看似空白的值。

最佳答案

您可以使用 :nth-of-type 的伪类选择器指定列号(nth td 行内的单元格)

Option Explicit
Public Sub SearchVin()
Dim d As WebDriver, hTable As Object, ws As Worksheet, t As Date
Dim headers(), vin As String
Const MAX_WAIT_SEC As Long = 10
Set d = New ChromeDriver
Set ws = ThisWorkbook.Worksheets("Sheet1")
Const URL = "https://www.autoreturn.com/indianapolis-in/find-vehicle/"

vin = "1G4HD57287U218052"

With d
.Start "Chrome"
.get URL

.FindElementById("vin").SendKeys vin '<== vin

Application.Wait Now + TimeSerial(0, 0, 1)

.FindElementByCss("[onclick='submitVin()']").Click

t = Timer
Do
DoEvents
On Error Resume Next
Set hTable = .FindElementByCss("table") 'use tag name of results table to target table
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While hTable Is Nothing
'do something with results
Dim towDates As Object, towDate As Object
If Not hTable Is Nothing Then
Set towDates = .FindElementsByCss("table tr.results-row td:nth-of-type(9)")
For Each towDate In towDates
Debug.Print towDate.Text
Next
End If
.Quit
End With
End Sub

结果如下所示:



限制行

您当然可以添加另一个 nth-of-type选择器来限制检索的行。假设您想要第 2 行的拖曳日期时间:
table tr:nth-of-type(2).results-row td:nth-of-type(9)



请注意,因为我正在使用一个类 "."选择器然后我限制上述选择器中的返回行以排除标题行。

使用最后一个 child :

因为所需的列是最后一个 td一行中的单元格(最后一列),您可以使用 :last-child 伪类选择器而不是 :nth-of-type例如
Set towDates = .FindElementsByCss("table tr.results-row td:last-child")


table tr:nth-of-type(2).results-row td:last-child

单个返回值与列表:

如果您期望一个值,那么您应用 css 选择器
.FindElementByCss

例如
.FindElementsByCss("table tr:nth-of-type(2).results-row td:last-child")

如果您期望一个值列表,那么您可以应用 css 选择器
.FindElementsByCss

例如
.FindElementsByCss("table tr.results-row td:last-child")

第一个 child 选择器:

另外值得注意的是,您可以访问 :first-child 选择器,例如抓取第一个结果行。

写出整个表格:

如果您想写出整个表格,请引用我的回答 here .

关于excel - 如何使用 Selenium 包装器从带有 vba 的 html 中获取特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54225263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com