SeleniumBasicで指定したHTML要素を取得する方法について紹介します。要素の取得方法はいくつか用意されていますが、1つだけ覚えれば大丈夫です。あとは簡単な応用となります。
また、HTML要素が見つからなかった場合の処理についても簡単に紹介します。
FindElementByIdで解決する
指定されているid属性値をFindElementByIdに指定するとWebElement型でHTML要素を取得することができます。HTML要素の文字列を取得したい場合は、Text関数で取得できます。
また、FindElementByIdの第3引数にFalseを指定すると、HTML要素が見つからなかった場合にはNothingが返却されます。後続で異常系を処理できます。サンプルプログラムを確認ください。
ちなみに第2引数はタイムアウト値(ミリ秒)です。HTML要素を探す時間となります。なお第3引数に何も指定しない場合、またはTrueを指定した場合は、例外がRaiseされます。
FindElementBy系の関数は他にもいくつかありますので、以下に記載します。FindElementByCssとFindElementByXPath以外は、ほぼ使い方は一緒です。
関数名 | 説明 |
---|---|
FindElementById | 指定されたidに一致する最初の要素を検索する。 |
FindElementByClass | 指定されたCSSクラスに一致する最初の要素を検索する。 |
FindElementByLinkText | 指定されたリンクテキストに一致する最初の要素を検索する。 |
FindElementByName | 指定された名前に一致する最初の要素を検索します。 |
FindElementByPartialLinkText | 与えられたリンクテキストの部分に一致する要素のうち、最初のものを探す |
FindElementByTag | 指定されたタグ名に一致する最初の要素を検索する。 |
FindElementByCss | 指定されたCSSセレクタに一致する最初の要素を検索します。 |
FindElementByXPath | 指定されたXPathに一致する最初の要素を検索する。 |
サンプルプログラム(コピペでOK)
最安値.comからJANコードを取得するサンプルプログラムコードを記載しました。JANコードが記載されている箇所のidは”p_dt12″であるため、FindElementByIDで取得することができます。
Option Explicit
Sub sample()
Dim dr As New Selenium.WebDriver
dr.Start "Chrome"
dr.Get "https://www.saiyasune.com/J4902370542905.html"
Dim el As WebElement
Set el = dr.FindElementById("p_dt12")
Debug.Print el.Text() ' JANコード: 4902370542905
' 要素が見つからない場合
Set el = dr.FindElementByClass("hogehogehoge", 0, False)
If el Is Nothing Then
Debug.Print "要素が見つかりませんでした" ' 要素が見つかりませんでした
End If
Stop
End Sub