前提
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
1Public Const sht1 = "アリエク発送自動化" 2 3Sub test() 4 5Dim Driver As New Selenium.WebDriver 6Dim i As Long 7 8SafeOpen Driver, Chrome 9 10Driver.Get ("https://login.aliexpress.com/?spm=a2g0o.cart.0.0.699938daanKXzt&return_url=https://www.aliexpress.com/p/shoppingcart/index.html") 11Driver.Wait 2000 12 13'ログイン作業 14Driver.FindElementByXPath("//*[@id=""fm-login-id""]").SendKeys "inaba.dangan@gmail.com" 15Driver.Wait 1000 16Driver.FindElementByXPath("//*[@id=""fm-login-password""]").SendKeys "inaba178" 17Driver.Wait 1000 18Driver.FindElementByXPath("//*[@id=""root""]/div/div/div/div[2]/div/div/button[2]").Click 19Driver.Wait 1000 20 21'カート画面遷移 22Driver.Get ("https://www.aliexpress.com/p/shoppingcart/index.html") 23Driver.Wait 1000 24 25'チェックボックス入れて支払い画面へ(エラーが出るか判別) 26 27On Error Resume Next 28Driver.FindElementByXPath("//*[@id=""root""]/div[1]/div[1]/div[1]/div[3]/div/div/div/div[2]/div/div[1]/label/span").Click 29 30Dim tryCnt As Long 31Do Until Err.Number = 0 Or tryCnt > 10 32 Err.Clear 33 34 '画面戻る 35 Driver.Get ("https://login.aliexpress.com/?spm=a2g0o.cart.0.0.699938daanKXzt&return_url=https://www.aliexpress.com/p/shoppingcart/index.html") 36 37 'エラーがでた時の再ログイン作業 38 Driver.FindElementByXPath("//*[@id=""fm-login-id""]").SendKeys "inaba.dangan@gmail.com" 39 Driver.Wait 1000 40 Driver.FindElementByXPath("//*[@id=""fm-login-password""]").SendKeys "inaba178" 41 Driver.Wait 1000 42 Driver.FindElementByXPath("//*[@id=""root""]/div/div/div/div[2]/div/div/button[2]").Click 43 Driver.Wait 5000 44 45 'ログインできたか確認(エラーが出るか判別) 46 Driver.FindElementByXPath("//*[@id=""root""]/div[1]/div[1]/div[2]/div[1]/button").Click 47 48 tryCnt = tryCnt + 1 49Loop 50On Error GoTo 0 51 52If tryCnt > 10 Then 53 MsgBox "ログインできませんでした。時間をおいて再実行してください。" 54 '終了処理 55 Exit Sub 56End If 57 58 59'住所編集画面開く 60On Error GoTo Catch 61Driver.FindElementByXPath("//*[@id=""placeorder_wrap__inner""]/div/div[1]/div[1]/div/div[2]/span/a").Click 62Exit Sub 63 64'エラーがでたらチェックを付けてから住所編集画面開く 65Catch: 66 Driver.FindElementByXPath("//*[@id=""root""]/div[1]/div[1]/div[1]/div[3]/label/span[1]/svg/path").Click 67 Driver.FindElementByXPath("//*[@id=""placeorder_wrap__inner""]/div/div[1]/div[1]/div/div[2]/span/a").Click 68 69Driver.Wait 1000 70 71'一番上の住所開く 72Driver.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 73Driver.Wait 1000 74 75'住所書き換え関数 76 77'氏名 78Driver.FindElementByXPath("//*[@id=""halo-wrapper-root""]/div/div/form/div[2]/div[2]/div/div[1]/div/div/span/input").SendKeys "{DELETE}" 79Driver.FindElementByXPath("//*[@id=""halo-wrapper-root""]/div/div/form/div[2]/div[2]/div/div[1]/div/div/span/input").SendKeys Range("C2") 80Driver.FindElementByXPath("//*[@id=""halo-wrapper-root""]/div/div/form/div[2]/div[2]/div/div[1]/div/div/span/input").SendKeys Range("D2") 81 82 83 84Stop 85 86End Sub 87
試したこと
特にないです。
補足情報(FW/ツールのバージョンなど)
Windows10
chrome

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/23 10:18
2022/10/23 10:42 編集
2022/10/23 13:57