【EXCEL VBA】SeleniumBasicでHTML要素を取得したい – FindElementBy

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