Вы можете использовать селектор псевдокласса :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
Результаты выглядят так:
![image](https://i.stack.imgur.com/I1rcY.png)
Ограничительная строка
Вы, конечно, можете добавить еще один селектор nth-of-type
, чтобы ограничить также и извлеченную строку. Скажем, вы хотели дату для буксировки для ряда 2:
table tr:nth-of-type(2).results-row td:nth-of-type(9)
![image](https://i.stack.imgur.com/3GUJD.png)
Обратите внимание, что, поскольку я также использую селектор класса "."
, я ограничиваю возвращаемые строки в вышеупомянутых селекторах, чтобы исключить строку заголовка.
Использование последнего ребенка:
Поскольку желаемым столбцом является последняя ячейка td
в строке (последний столбец), вместо :nth-of-type
, например,
можно использовать селектор псевдокласса
:last-child
.
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
* * +1058 например,
.FindElementsByCss("table tr.results-row td:last-child")
селектор первого ребенка:
Также стоит отметить, что у вас есть доступ к селектору :first-child
, например, для получения первой строки результатов.
Выписка всей таблицы:
Если вы хотите выписать всю таблицу, я отсылаю вас к моему ответу здесь .