VBA,セレニウムの動作中に、エラー処理のタイミングでブラウザが落ちてしまいます。

前提

VBAでセレニウムを使ったプログラムを作成しています。
アリエクスプレスというサイトに住所氏名などの情報を自動で入力する機能を作っているのですが、
エラー処理の直後にブラウザが勝手に落ちてしまいます。
コードが長いので、該当の部分だけを抜粋したのが以下です。(コード全体の半分より下辺りの部分です)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'住所編集画面開く
On Error GoTo Catch
Driver.FindElementByXPath("//*[@id=""placeorder_wrap__inner""]/div/div[1]/div[1]/div/div[2]/span/a").Click
Exit Sub

'エラーがでたらチェックを付けてから住所編集画面開く
Catch:
Driver.FindElementByXPath("//[@id=""root""]/div[1]/div[1]/div[1]/div[3]/label/span[1]/svg/path").Click
Driver.FindElementByXPath("//
[@id=""placeorder_wrap__inner""]/div/div[1]/div[1]/div/div[2]/span/a").Click
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

これはアリエクスプレスのカート追加の画面で、商品にチェックを付けてから支払い画面に移動する必要があるのですが、
ややこしいことにデフォルトでチェックがついている時と、デフォルトで付いていない時の2パターンがあります。
なので最初にチェックをクリックせずに支払い画面に移動(クリック)する動作をして、もしエラーが出た場合はチェックをクリックしてから支払い画面に移動するようにしています。

問題は、エラーが出なかった時の動作です。
エラー処理の後にもコードが続いているので、「Exit Sub」で関数を抜けて次の動作に行くはずなのですが、このタイミングでプログラム自体が終了してしまいます。
エラーが何も出ないので正常に終了されている扱いになっているようです。
これは何かのバグなのでしょうか?
それともどこかでコードの書き方を間違えてしまったのでしょうか?

ちなみに、コードの前半部分は問題なく動作しています。
回答にあたって不足している情報がありましたら逆質問をお願い致します。

発生している問題・エラーメッセージ

プログラムの途中でブラウザが閉じてしまいます・・・

該当のソースコード

vba

Public Const sht1 = "アリエク発送自動化" Sub test() Dim Driver As New Selenium.WebDriver Dim i As Long SafeOpen Driver, Chrome Driver.Get ("https://login.aliexpress.com/?spm=a2g0o.cart.0.0.699938daanKXzt&return_url=https://www.aliexpress.com/p/shoppingcart/index.html")Driver.Wait 2000 'ログイン作業Driver.FindElementByXPath("//*[@id=""fm-login-id""]").SendKeys "inaba.dangan@gmail.com"Driver.Wait 1000Driver.FindElementByXPath("//*[@id=""fm-login-password""]").SendKeys "inaba178"Driver.Wait 1000Driver.FindElementByXPath("//*[@id=""root""]/div/div/div/div[2]/div/div/button[2]").Click Driver.Wait 1000 'カート画面遷移Driver.Get ("https://www.aliexpress.com/p/shoppingcart/index.html")Driver.Wait 1000 'チェックボックス入れて支払い画面へ(エラーが出るか判別) On Error Resume NextDriver.FindElementByXPath("//*[@id=""root""]/div[1]/div[1]/div[1]/div[3]/div/div/div/div[2]/div/div[1]/label/span").Click Dim tryCnt As LongDo Until Err.Number = 0 Or tryCnt > 10 Err.Clear '画面戻る Driver.Get ("https://login.aliexpress.com/?spm=a2g0o.cart.0.0.699938daanKXzt&return_url=https://www.aliexpress.com/p/shoppingcart/index.html") 'エラーがでた時の再ログイン作業 Driver.FindElementByXPath("//*[@id=""fm-login-id""]").SendKeys "inaba.dangan@gmail.com" Driver.Wait 1000 Driver.FindElementByXPath("//*[@id=""fm-login-password""]").SendKeys "inaba178" Driver.Wait 1000 Driver.FindElementByXPath("//*[@id=""root""]/div/div/div/div[2]/div/div/button[2]").Click Driver.Wait 5000 'ログインできたか確認(エラーが出るか判別) Driver.FindElementByXPath("//*[@id=""root""]/div[1]/div[1]/div[2]/div[1]/button").Click tryCnt = tryCnt + 1LoopOn Error GoTo 0 If tryCnt > 10 Then MsgBox "ログインできませんでした。時間をおいて再実行してください。" '終了処理 Exit SubEnd If '住所編集画面開くOn Error GoTo CatchDriver.FindElementByXPath("//*[@id=""placeorder_wrap__inner""]/div/div[1]/div[1]/div/div[2]/span/a").Click Exit Sub 'エラーがでたらチェックを付けてから住所編集画面開くCatch: Driver.FindElementByXPath("//*[@id=""root""]/div[1]/div[1]/div[1]/div[3]/label/span[1]/svg/path").Click Driver.FindElementByXPath("//*[@id=""placeorder_wrap__inner""]/div/div[1]/div[1]/div/div[2]/span/a").Click Driver.Wait 1000 '一番上の住所開くDriver.FindElementByXPath("/html/body/div[9]/div[2]/div/div[2]/div[2]/div/div[1]/div[1]/div/div[2]/div[2]/span[1]/a").Click Driver.Wait 1000 '住所書き換え関数 '氏名Driver.FindElementByXPath("//*[@id=""halo-wrapper-root""]/div/div/form/div[2]/div[2]/div/div[1]/div/div/span/input").SendKeys "{DELETE}"Driver.FindElementByXPath("//*[@id=""halo-wrapper-root""]/div/div/form/div[2]/div[2]/div/div[1]/div/div/span/input").SendKeys Range("C2")Driver.FindElementByXPath("//*[@id=""halo-wrapper-root""]/div/div/form/div[2]/div[2]/div/div[1]/div/div/span/input").SendKeys Range("D2") Stop End Sub

試したこと

特にないです。

補足情報(FW/ツールのバージョンなど)

Windows10
chrome

コメントを投稿

0 コメント