【EXCEL VBA】SeleniumBasicで要素の存在有無を判定したい

要素の存在有無は、FindElementBy系の関数で例外キャッチやNothing判定で可能です。しかし、いまいちコードが綺麗にならないので、別の方法を調査したところIsElementPresentという関数を見つけたので紹介します。

IsElementPresentで解決する

関数名が目的を表していますね。要素有無を判定する関数となります。戻り値はBooleanです。

IsElementPresent関数の引数はByクラスとなります。Byクラスの利用方法はFindElementBy系とほぼ一緒です。使い方も非常に簡単なので、サンプルプログラムを確認してください。

By系の関数一覧を以下に記載します。FindElementBy系とほぼ一緒であることがわかると思います。

関数名説明
IdIdを検索する
ClassCSSクラスを検索する
LinkTextリンクテキストを検索する
Name名前を検索する
PartialLinkTextリンクテキストの一部を検索する
Tagタグを検索する
CssCssセレクタを利用して検索する
XPathXPathを利用して検索する

サンプルプログラム(コピペでOK)

Option Explicit

Sub sample()
    Dim dr As New Selenium.WebDriver
    Dim myBy As New By
    
    dr.Start "Chrome"
    dr.Get "https://www.google.co.jp/"
 
    Debug.Print dr.IsElementPresent(myBy.Name("q"))         ' True
    Debug.Print dr.IsElementPresent(myBy.Class("hogehoge")) ' False

    Stop
End Sub