要素の存在有無は、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
