セレンラッパー付きの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の2つの日時が必要だとします。
table tr:nth-of-type(2).results-row td:nth-of-type(9)
クラス"."
セレクターも使用しているため、上記のセレクターで返される行を制限して、ヘッダー行を除外していることに注意してください。
最後の子の使用:
目的の列は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")
ファーストチャイルドセレクター:
また:first-child
、最初の結果行を取得するなど、セレクターにアクセスできることにも注意してください。
テーブル全体を書き出す:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加