Selenium(Edge/Chrome)

Selenium「Webページに指定要素が存在するかチェックする」【ExcelVBA】

VBAでSeleniumBasicで自動操作で要素が存在するかどうかチェックしたい場合があります。

ページ読み込み待ちでOKとなったにも関わらず、
オブジェクトに指定した要素が存在していないケースがあり、結果、エラーになることがあります。

こちらは指定要素が存在するかどうかを判断して処理を変更すれば問題ありません。

Webページに指定要素が存在するかチェックするサンプルコード

Public Sub test()
    Dim driver As New Selenium.WebDriver
    Dim myBy As New By
    
    Dim sURL As String: sURL = "https://vba-create.jp/"
    
    driver.Start "chrome"
    driver.Get sURL
    
    '■要素が存在していればTrue/存在しなければFalse
    Debug.Print driver.IsElementPresent(myBy.ID("menu-item-976"))
    
    '■要素が存在してれば処理を行う
    If driver.IsElementPresent(myBy.ID("menu-item-976")) Then
        '存在していた場合の処理
    End If
    
    '■上記はidの場合です。id要素以外は以下参照。
    Debug.Print driver.IsElementPresent(myBy.Class("xxxxx")) 'Class
    Debug.Print driver.IsElementPresent(myBy.Name("xxxxx"))  'Name
    Debug.Print driver.IsElementPresent(myBy.Tag("xxxxx"))   'Tag
    
End Sub

注意点

  • IE自動操作の場合はisNull関数で調べる事が出来ましたが、SeleniumBasicの場合は専用のプロパティを使用します。

関連記事

SeleniumBasicについて

Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。

但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。

コメント

タイトルとURLをコピーしました