要素の存在有無は、FindElementBy系の関数で例外キャッチやNothing判定で可能です。しかし、いまいちコードが綺麗にならないので、別の方法を調査したところIsElementPresentという関数を見つけたので紹介します。
IsElementPresentで解決する
関数名が目的を表していますね。要素有無を判定する関数となります。戻り値はBooleanです。
IsElementPresent関数の引数はByクラスとなります。Byクラスの利用方法はFindElementBy系とほぼ一緒です。使い方も非常に簡単なので、サンプルプログラムを確認してください。
By系の関数一覧を以下に記載します。FindElementBy系とほぼ一緒であることがわかると思います。
関数名 | 説明 |
---|---|
Id | Idを検索する |
Class | CSSクラスを検索する |
LinkText | リンクテキストを検索する |
Name | 名前を検索する |
PartialLinkText | リンクテキストの一部を検索する |
Tag | タグを検索する |
Css | Cssセレクタを利用して検索する |
XPath | XPathを利用して検索する |
サンプルプログラム(コピペで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