SeleniumBasic エラー事例集

 SeleniumBasicで発生するエラーを集めてみました。SeleniumBasicに限らず、VBAでコード作成する場合は、エラー、バグとどの様に上手に付き合っていくかが課題になります。Seleniumを利用する場合、通信環境が場所、時間、PCスペック等により待機条件等が異なりますので、各環境に適したコードを作成しなければなりません。
 このページは、基本的に全てChromeにて検証したエラー事例集となります。EdgeやFirefox等、他ブラウザでは検証を行っておりません。新たにエラーを発見し、対処方法が分かれば随時項目を追加していきたいと思います。

目次

ブラウザ起動の失敗

コンパイルエラー

コンパイルエラー ユーザ定義型は定義されていません。

原因

 SeleniumBasicがインストールされていないか、VBE参照設定で「Selenium Type Library」が選択されていない可能性があります。

対処法

 まず、SeleniumBasicがインストールされているか確認します。次にVBE参照設定で「Selenium Type Library」にチェックが入っているか確認します。詳しくは以下ページで説明しています。

オートメーションエラー

実行時エラー ‘-2146232576(80131700)’ オートメーション エラーです。

原因

 ChromeDriverでChrome起動時に上記エラーが発生します。.NET Framework3.5がインストールがされていない場合、ブラウザ起動に失敗してエラー発生します。

対処方法

対処方法は以下手順です。

STEP
StartChrome.vbsをダブルクリック

 SeleniumBasicのインストールフォルダに格納されているStartChrome.vbsファイルをダブルクリックし、実行します。フォルダは、「C:\Program Files\Seleniumbasic\Scripts」になります。環境によって、「shell:Local AppData\SeleniumBasic\Scripts」に保存されている場合があります。

STEP
.NET Framework3.5のインストール

 スクリプト実行後、以下画面より.NET Framework3.5をインストールします。既に.NET Framework3.5以上がインストールされている場合はこの画面は出ずにスクリプトが終了します。

SessionNotCreatedError

SessionNotCreatedError
session not created: This version of ChromeDriver only supports Chrome version 92 Current browser version is 95.0.4638.69 with binary path "<GoogleChromeインストールファイルパス>"
(Driver info: chromedriver=・・・)

原因

 WebDriverがブラウザのバージョンと異なっています。ブラウザバージョンを確認し、ブラウザバージョンと同バージョンのWebドライバーをダウンロード、SeleniumBasicインストールフォルダに保存する必要があります。

対処方法

STEP
Chromeのバージョン確認

ブラウザ画面他アイコン [設定] ⇒ ヘルプ ⇒ Google Chromeについて をクリック。

 GoogleChromeのバージョンを確認します。記事作成時は、バージョン:111.0.5563.147でした。

STEP
ChromeDriverのダウンロード

ChromeDriver-WebDriver for Chromeのホームページからバージョンに合致した「chromedriver_win32.zip」ファイルをダウンロードします。

 「chromedriver win32.zip」をクリックしてダウンロード

 ZIPファイルを解凍し、ChromeDriverをSeleniumBasicのインストールフォルダに保存します。保存先は、「C:\Program Files\Seleniumbasic」になります。環境によって、「shell:Local AppData\SeleniumBasic」に保存されている場合があります。

TimeoutError

TimeoutError
timeout: Timed out receiving message from renderer: 60.000
(Session info: chrome=・・・)
(Driver info: chromedriver=・・・)

原因

 通信状態が遅い場合、ホームページがなかなか開かずタイムアウトでエラーが発生します。デフォルトで60秒のタイムアウト時間が設けられています。

対処方法

 まずは通信状態を改善するのが良いですが、次善の策としてはタイムアウトの時間を延期させます。下のエラー例では、Timeout.PageLoad = 0によってタイムアウト時間を0秒にして模擬的にエラーを出していますが、0を100000(100秒)等に設定し、タイムアウト時間を延ばせばタイムアウトエラーを回避できる様になります。秒数設定値は通信環境によって異なります。

エラー発生例

Private Sub TimeoutError()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    Dim Cap As Dictionary
    Dim Timeout As Timeouts
    Set Timeout = driver.Timeouts
    Timeout.PageLoad = 0
    driver.Get "https://the-internet.herokuapp.com/javascript_alerts"
    Exit Sub
ErrHandle:
    Debug.Print Err.Description
    Stop
    driver.Quit
End Sub

不正なモジュールです

コンパイルエラー:不正なモジュールです。

原因

 モジュールのオブジェクト名が変数宣言のインスタンス名と同じ名称になっている場合に発生するエラーです。

対処方法

 オブジェクト名を他の名称に変更します。上記例の場合はオブジェクト名を"ChromeDriver"から"ChromeDriverCls"等の別名称にします。

エラー発生例

エラー回避するには、2行目:コメントアウト、3行目:コメントアウト解除します。このエラー回避方法は、上記対処方法の方法2のやり方になります。

Private Sub ErrorTest_ObjectName()
    Dim Driver As New ChromeDriver
    'Dim Driver As New Selenium.ChromeDriver
    Driver.Get "https://google.co.jp"
    Driver.Quit
End Sub

インスタンス宣言の誤り

オブジェクト変数または With ブロック変数が設定されていません。

原因

 ドライバー変数宣言の際、「New」を付け忘れると発生するエラーです。KeysクラスやAssertクラス等、ドライバーから独立して使用する様なクラスの場合でも「New」付の宣言が必要になります。

対処方法

 原因で記載の通り、ドライバー変数宣言時に「New」を付けて変数宣言します。

エラー発生例

2行目をコメントアウトし、3行目のコメントアウトを解除すればエラー回避されます。

Private Sub ErrorTest_New()
    Dim Driver As ChromeDriver
    'Dim Driver As New ChromeDriver
    Driver.Get "https://google.co.jp"
    Driver.Quit
End Sub

WebElement関連のエラー

NoSuchElementError

NoSuchElementError
Element not found for Css=・・・

Web要素取得の失敗

・原因、対処方法
 FindElementの設定に誤りがある場合、このエラーが発生します。FindElementByCssでWeb要素取得ができない場合、FindElementByXPathやFindElementByClassでWeb取得を試みます。

・エラー例

Sub NosuchElement()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    driver.Get "https://programan.org/"
    Stop
    driver.FindElementByCss ("hoge")
    Exit Sub
ErrHandle:
    Debug.Print Err.Description
    driver.Quit
End Sub

ページロード完了前にWeb取得が実行される

・原因、対処方法

 ページロードが完了する前にFindElementを実行してしまう場合にこのエラー発生します。Web取得の構文自体は間違っていないのに通信環境があまり良くない状況や状態の時に発生する確率が高くなります。Driver.Wait 3000 といった様に待機時間を設け、ページロード完了までの時間を稼ぎます。

・エラー対処例
Driver.Wait 3000 の様に待機時間を設ける方法以外の一例を以下で紹介します。Web要素を取得する前にFindElementsでWeb要素数が0より大きくなるまでループさせています。この構文は、Web取得要素の指定が間違いない場合に有効ですが、要素指定が間違っている場合無限ループになってしまいますのでご注意ください。

Sub NosuchElement_LoadWait()
    Dim driver As New ChromeDriver
    Dim elms As WebElements, elm As WebElement, str As String
    driver.Get "https://programan.org/"
    str = "#main_content > div > div > div > dl:nth-child(3) > a > dd"
    Set elms = driver.FindElementsByCss(str)
    Do Until elms.Count > 0
        DoEvents
        Set elms = driver.FindElementsByCss(str)
    Loop
    Set elm = driver.FindElementByCss(str)
    elm.Click
    driver.Wait 1500
    driver.Quit
End Sub

element not interactable

SeleniumError(又は ElementNotVisibleError)
element not interactable
(Session info: chrome=・・・)
(Driver info: chromedriver=・・・)

原因

 Web要素をきっちりキャッチできているけれども、上記エラーが発生する場合があります。発生する場合の多くは、WebElementのHTML表示設定が非表示設定になっている場合です。目視でページを確認するとちゃんと表示されているのに、IsDisplayedプロパティで表示状態を確認してみるとFalseが返り、設定が非表示になっていることが分かります。ホームページのメニューバーをクリックしようとした場合によく発生するエラーです。

対処方法1

以下コード文9行目のJavaScript構文でクリック操作を実行すると問題なくクリックができます。

Private Sub element_not_interactable_JavaScript()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    Dim elm As WebElement, nearElm As WebElement
    driver.Get "https://programan.org/"
    Set elm = driver.FindElementByXPath("//*[@id='sp_menu']/div[1]/div[2]/div[2]/ul/li[2]/a")
    Set nearElm = driver.FindElementByXPath()
    Debug.Print "IsDisplayed:" & elm.IsDisplayed
    elm.ExecuteScript "arguments[0].click();", elm
    driver.Wait 1500
    driver.Quit
End Sub

対処方法2

 キャッチできないWeb要素の付近で取得が可能なWeb要素をキャッチし、Offsetで目標のWeb要素を取得します。非表示設定になっている目標要素はLocationメソッドでも座標軸を取得できないため、なるべく目標要素から近いWeb要素を取得し、移動する座標軸を調整します。

Private Sub NearElement_Click()
    Dim driver As New ChromeDriver
    Dim elm As WebElement, nearElm As WebElement
    driver.Get "https://programan.org/"
    Set nearElm = driver.FindElementByCss("#header > div.l-header__inner.l-container > div.l-header__logo > h1 > a")
    driver.Actions.MoveToElement(nearElm).MoveByOffset(670, 10).Click.Perform
    driver.Wait 1500
    driver.Quit
End Sub

エラー発生例

Private Sub element_not_interactable()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    Dim elm As WebElement
    driver.Get "https://programan.org/"
    Set elm = driver.FindElementByXPath("//*[@id='sp_menu']/div[1]/div[2]/div[2]/ul/li[2]/a")
    Debug.Print "IsDisplayed:" & elm.IsDisplayed
    elm.Click
    driver.Quit
    Exit Sub
ErrHandle:
    Debug.Print Err.Description
    driver.Quit
End Sub

element click intercepted

SeleniumError
element click intercepted: Element・・・is not clickable at point (*, *). Other element would receive the click:
(Session info: chrome=・・・)
(Driver info: chromedriver=・・・)

原因

 Seleniumで座標軸をクリックしようとする場合、ブラウザのウィンドウ枠外に要素の座標軸がある場合、座標軸をキャッチできずエラーが発生します。ウィンドウサイズが小さい場合、エラー発生する確率が高くなります。Web要素をクリックしようとした場合、ブラウザのウィンドウサイズが小さい状況でクリック実行しようとすると発生するエラーです。

対処方法1 画面最大化

 ウィンドウサイズを最大化すれば、どの座標軸でも枠外になることはありませんので、エラー回避することができます。

Private Sub element_click_intercepted_Maximize()
    Dim driver As New ChromeDriver
    Dim elm As WebElement
    driver.Get "https://programan.org/"
    driver.Window.Maximize
    Set elm = driver.FindElementByCss("#categories-2 > ul > li.cat-item.cat-item-5 > a")
    elm.Click
    driver.Wait 1500
    driver.Quit
End Sub

対処方法2 JavaScript

JavaScript構文を利用すれば座標軸がウィンドウ枠外でもクリックが可能です。

Private Sub element_click_intercepted_JavaScript()
    Dim driver As New ChromeDriver
    Dim elm As WebElement
    driver.AddArgument "--window-size=200,400" '横幅,縦幅
    driver.Get "https://programan.org/"
    Set elm = driver.FindElementByCss("#categories-2 > ul > li.cat-item.cat-item-5 > a")
    elm.ExecuteScript "arguments[0].click();", elm
    driver.Wait 2500
    driver.Quit
End Sub

対処方法3 対象要素までスクロール

 ウィンドウサイズが狭くとも、Web要素まで移動すれば、ウィンドウサイズ枠内に収まるため、エラー回避することができます。

Private Sub element_click_intercepted_MoveElement()
    Dim driver As New ChromeDriver
    Dim elm As WebElement
    driver.AddArgument "--window-size=200,400" '横幅,縦幅
    driver.Get "https://programan.org/"
    Set elm = driver.FindElementByCss("#categories-2 > ul > li.cat-item.cat-item-5 > a")
    driver.Actions.MoveToElement(elm).Click.Perform
    driver.Wait 2500
    driver.Quit
End Sub

エラー発生例

Private Sub element_click_intercepted_error()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    Dim elm As WebElement
    driver.AddArgument "--window-size=200,200" '横幅,縦幅
    driver.Get "https://programan.org/"
    Set elm = driver.FindElementByCss("#categories-2 > ul > li.cat-item.cat-item-5 > a")
    elm.Click
    Exit Sub
ErrHandle:
    Debug.Print Err.Description
    driver.Quit
End Sub

stale element reference

StaleElementReferenceError
stale element reference: element is not attached to the page document
(Session info: chrome=・・・)
(Driver info: chromedriver=・・・

原因

 一度取得したWeb要素がホームページ読込み後のイベント等で消えてしまった場合、Web要素のハンドルができなくなった場合に発生するエラーです。ページ表示直後には現れ、消えるWeb要素をFindElementsで複数要素を取得し、要素クリックをハンドルした場合によく発生するエラーです。

対処方法1 待機時間を設ける

 ドライバーにて対象ページを取得後、待機時間を充分に設け、ページ表示後のイベントを終わらせてからWeb取得すればエラー回避の可能性が高まります。

Private Sub stale_element_reference_Wait()
    Dim driver As New ChromeDriver
    driver.Get "https://www.pref.kyoto.jp/kenkoshishin/pdfdown.html"
    driver.Wait 5000
    Dim elms As WebElements
    Set elms = driver.FindElementsByXPath("//a[@href]")
    Dim i As Long
    For i = 1 To elms.Count
        Debug.Print elms.Item(i).Text
    Next i
    driver.Quit
End Sub

対処方法2 Web要素の取得し直し

 エラー発生時に再度Web要素を取得し、消えたWeb要素を除外したWebElementsを取得し直せばエラー回避することができます。

Private Sub stale_element_reference_Reset()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    driver.Get "https://www.pref.kyoto.jp/kenkoshishin/pdfdown.html"
    Dim elms As WebElements
    Set elms = driver.FindElementsByXPath("//a[@href]")
    Dim i As Long, 開始行 As Long
    開始行 = 1
ErrResume:
    For i = 開始行 To elms.Count
        Debug.Print elms.Item(i).Text
    Next i
    driver.Quit
    Exit Sub
ErrHandle:
    Debug.Print "エラー発生: " & i
    開始行 = i
    Set elms = driver.FindElementsByXPath("//a[@href]")
    Resume ErrResume
End Sub

対処方法3 エラー対象を除外

 事前にエラー発生するWeb要素の順番が分かっていれば、対象番号を除外すればエラー回避することができます。エラー番号は、下段のエラー発生例にて確認することができます。今回は、54番目でエラーが発生していますので、当該番号をハンドル対象から除外します。

Private Sub stale_element_reference_Exception()
    Dim driver As New ChromeDriver
    driver.Get "https://www.pref.kyoto.jp/kenkoshishin/pdfdown.html"
    Dim elms As WebElements
    Set elms = driver.FindElementsByXPath("//a[@href]")
    Dim i As Long
    For i = 1 To elms.Count
        If i <> 54 Then
            Debug.Print elms.Item(i).Text
        End If
    Next i
    driver.Quit
End Sub

エラー発生例

Private Sub stale_element_reference_Error()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    driver.Get "https://www.pref.kyoto.jp/kenkoshishin/pdfdown.html"
    Dim elms As WebElements
    Set elms = driver.FindElementsByXPath("//a[@href]")
    Dim buf, i
    For i = 1 To elms.Count
        buf = elms.Item(i).Attribute("href")
    Next i
    driver.Quit
    Exit Sub
ErrHandle:
    Debug.Print "エラー発生: " & i
    Debug.Print Err.Description
    driver.Quit
End Sub

InvalidSelectorError

InvalidSelectorError
invalid selector: Compound class names not permitted
(Session info: chrome=・・・)
(Driver info: chromedriver=・・・

原因

 SeleniumBasicで「FindElementByClass」にて要素取得をする際、要素名にスペースがある場合、複数クラスのキャッチができずエラーが発生します。メソッド名を「FindElementByCss」を間違えて「FindElementByClass」にしてしまった際によく発生するエラーになるかと思います。

対処方法1 メソッド名の確認

 メソッド名に間違いが無いか確認し、利用したいメソッドがFindElementByClassで合っているか確認します。

対処方法2 要素名のスペースを無くす

 利用したいメソッドがFindElementByClassである場合、取得したい要素を一つに限定し、要素名のスペースを無くします。

対処方法3 要素を複数検索できる様に設定する

 Byクラスを利用し、複数Classの検索を可能にさせます。以下に例を紹介します。

Private Sub Use_ByAny()
    Dim driver As New ChromeDriver
    Dim By As New By
    driver.Get "https://www.google.co.jp"
    Dim bt
    Set bt = By.Any(By.Class("MV3Tnb"), By.ID("gbqfbb"))
    driver.FindElement(bt).Click
    Stop
    driver.Quit
End Sub

 こちらの例は以下ページでも紹介しています。

エラー発生例

Private Sub InvalidSelectorError()
    On Error GoTo ErrHandle
    Dim Driver As New ChromeDriver
    Driver.Get "https://ja.wikipedia.org/wiki/メインページ"
    Dim ele As WebElement, str As String
    str = "#sister-projects-list > div:nth-child(1) > div:nth-child(2) > b > a"
    Set ele = Driver.FindElementByClass(str)
ErrHandle:
    Debug.Print Err.Description
    Driver.Quit
End Sub

Window関連のエラー

NoSuchWindowError

NoSuchWindowError
Window not found.

原因

ウィンドウタイトルの指定に誤りがあった場合に発生するエラーです。

対処方法

ウィンドウ名をdriver.Window.Title 等で確認した上でウィンドウ名を指定すればエラー回避できます。

エラー発生例

Private Sub WindowError()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    Dim Keys  As New Keys
    Dim elm As WebElement
    driver.Get "https://programan.org/"
    Set elm = driver.FindElementByCss("#categories-2 > ul > li.cat-item.cat-item-5 > a")
    elm.Click Keys.Control
    driver.Wait 1500
    driver.Window.SwitchToWindowByTitle "hoge"
    driver.Quit
    Exit Sub
ErrHandle:
    Debug.Print Err.Description
    Debug.Print "ウィンドウ名: " & driver.Window.Title
    driver.Quit
End Sub

cannot determine loading status from no such window

UnknownError
unknown error: cannot determine loading status
from no such window
(Session info: chrome=116.0.5845.141)
(Driver info: chromedriver=116.0.5845.96 (1a391816688002153ef791ffe60d9e899a71a037-refs/branch-heads/5845@{#1382}),platform=Windows NT 10.0.19045 x86_64)

原因

 新規タブや新規ウィンドウを3ウィンドウ以上開き、ウィンドウ変遷した後にドライバー操作をする際、時々発生するエラーです。4ウィンドウ、5ウィンドウと、ウィンドウの変遷の数が増えると発生する確率が高まります。ダイアログボックスへの変遷をする場合でも発生するエラーになります。
 発生原因は現状不明です。以前は、ChromeDriverのバージョン103でのみ発生するエラーとされていましたが、113, 114, 116でも発生している状況の様です。ちなみに私のPC環境は116で発生を確認しました。事象は毎回発生する訳ではなく、発生の規則性はありません。
 エラー発生する原因が不明であるため、根本解決はChromeDriverがエラー改善されるのを待つしかありません。

対処法1

 特定のChromeDriverで発生するエラー事象の様ですので、GoogleChromeとChromeDriverのバージョンをエラー発生しないバージョンまでダウングレードする方法があります。バージョン115では事象が一度収まっていますが、本当にエラー回避ができるのか確証が持てません。また、セキュリティ上でもGoogleChromeのバージョンを古いバージョンのまま留めておくことはあまりお勧めできません。

対処法2

 このエラーは毎回必ず発生するエラーではないため、エラー発生時にエラーキャッチをして、同様の作業をもう一回トライしてみるとすんなり動作します。ただ、一度エラーが発生すると、連続的に発生する時があります。エラー発生例でエラーキャッチの方法を紹介しています。

エラー発生例

 エラーが発生した際、エラーキャッチし、エラー内容をSheet1へ入力する作業をしています。

Private i As Long
Private maxrow As Long
Private driver As New ChromeDriver
Private sKey As New Keys
Private elm As WebElement

Option Explicit

Private Sub Err発生実験()

For i = 1 To 100
    Call google操作
Next i

End Sub

Private Sub google操作()

On Error GoTo ErrHandle

Dim counter As Integer: counter = 0
driver.Get "https://www.google.co.jp/"
counter = counter + 1
driver.FindElementByClass("MV3Tnb").Click sKey.Control

driver.SwitchToNextWindow
counter = counter + 1
Set elm = driver.FindElementByCss("#page-content > section.modules-lib__three-up-tile.glue-page._home-commitments-three-up-tiles > div > div:nth-child(1) > div > a > div > div > picture > img")
driver.Actions.MoveToElement(elm).Perform
Set elm = driver.FindElementByXPath("//*[@id='page-content']/section[5]/div/div[2]/div/div/a")
elm.Click sKey.Control

driver.SwitchToNextWindow
counter = counter + 1
'↓ここでエラー発生
Set elm = driver.FindElementByXPath("//*[@id='page-content']/section[3]/nav/ul/li[1]/a/span")
driver.Actions.MoveToElement(elm).Perform
driver.FindElementByXPath("//*[@id='commitments-view-all-reports-container']/div/a").Click sKey.Control

driver.SwitchToNextWindow
counter = counter + 1
'↓ここでエラー発生
Set elm = driver.FindElementByClass("sub-nav-item-button")
elm.Click sKey.Control

driver.SwitchToNextWindow
counter = counter + 1
'↓ここでエラー発生
Set elm = driver.FindElementByXPath("//*[@id='advancing_sustainability']/div[2]/div[2]/div/a/div/h4")
driver.Wait 1000
driver.Quit

Exit Sub

ErrHandle:
    With Sheet1
    maxrow = .Cells(Rows.Count, 1).End(xlUp).Row
    .Cells(maxrow + 1, 1) = i
    .Cells(maxrow + 1, 2) = counter
    .Cells(maxrow + 1, 3) = Err.Number
    .Cells(maxrow + 1, 4) = Err.Description
    .Cells(maxrow + 1, 4).WrapText = False
    End With
    
driver.Wait 3000
driver.Quit
google操作

End Sub

上記、「Err発生実験」を2回試し、計200回のテストをした結果は以下のとおりです。

スクロールできます
Window_Count発生回数累計発生率
3105%
42317%
51122%

 4ウィンドウ目にエラー発生する回数が一番多くなりました。当然のことならが、ウィンドウ数が増えれば増えるほど、累計のエラー発生率は高くなります。現状、ウィンドウの変遷は3回以内に抑えておくのが無難な対処になるかと思います。ウィンドウの変遷が1回に収めている場合は発生しないエラーになります。

 エラー回避のマクロファイルを以下リンクからダウンロードできます。エラー回避をすると、実際どの箇所でエラーが発生しているか分からなくなるので、Module2ではエラーキャッチをせずにエラー発生箇所が分かる構文にしています。

ダイアログボックス関連のエラー

UnexpectedAlertOpenError

UnexpectedAlertOpenError
unexpected alert open: {Alert text : }
(Session info: chrome=・・・)
(Driver info: chromedriver=・・・)

原因

予期せぬアラートが発生した場合に出現するエラーです。詳細は、usage_alertで解説しています。

対処方法

 予期せぬアラートが出た場合、アラート画面のOKボタンをクリックした上でエラー発生をOn Error GoTo ErrHandleでエラー回避し、処理を続行しています。

Private Sub UnexpectedAlert_handle()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    driver.SetCapability "unexpectedAlertBehaviour", "accept"
    driver.Get "https://www.tagindex.com/javascript/window/confirm.html"
    driver.FindElementByCss("#content > section.overview > figure > p > input[type=button]").Click
    Dim dlg As Alert: Set dlg = driver.SwitchToAlert(Raise:=False)
ErrResume:
    driver.Get "https://www.tagindex.com/javascript/window/alert1.html"
    driver.Wait 2000
    driver.Quit
    Exit Sub
ErrHandle:
    Debug.Print Err.Description
    Resume ErrResume
End Sub

エラー発生例

Private Sub UnexpectedAlert_Error()
    On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    driver.SetCapability "unexpectedAlertBehaviour", "ignore"
    driver.Get "https://www.tagindex.com/javascript/window/confirm.html"
    driver.FindElementByCss("#content > section.overview > figure > p > input[type=button]").Click
    Dim dlg As Alert: Set dlg = driver.SwitchToAlert(Raise:=False)
    driver.Get "https://www.tagindex.com/javascript/window/alert1.html"  'ここでエラーが発生
    Exit Sub
ErrHandle:
    Debug.Print Err.Description
    driver.Wait 2000
    driver.Quit
End Sub

NoAlertPresentError

NoAlertPresentError
no such alert
(Session info: chrome=・・・)
(Driver info: chromedriver=・・・)

原因

 ダイアログボックスが出現していない状態で、ダイアログボックスハンドルをしようとした場合に発生するエラーです。

対処方法

 ダイアログボックスが出現しないことが事前に分かっている場合は、ダイアログボックスハンドルをしなければエラー回避することができます。

エラー発生例

Private Sub NoAlertPresent_Error()
On Error GoTo ErrHandle
    Dim driver As New ChromeDriver
    driver.Get "https://www.tagindex.com/javascript/window/alert1.html"
    Dim dlg As Alert: Set dlg = driver.SwitchToAlert  'ここでエラー発生
    driver.Quit
    Exit Sub
ErrHandle:
    Debug.Print Err.Description
    driver.Quit
End Sub

タスクスケジューラ実行時のエラー

クラスが登録されていません

クラスが登録されていません

原因

 SeleniumBasicのインストールが管理者権限でされていない場合に発生するエラーになります。タスクスケジューラでSeleniumBasic実行時にのみ発生するエラーとなります。VBAを直接実行する場合はこのエラーは発生しません。

対処方法

 SeleniumBasicを一度アンインストールし、再度管理者権限にてSeleniumBasicを再インストールします。インストール方法について詳しくは以下ページを参照してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを中心とした自動化、効率化の手法を紹介しています。現在は、SeleniumBasicのexamplesを紹介しています。その内、SeleniumBasic以外の手法も掲載したいと思っております。

目次