XPathがページによって異なる場合の、同じ値の繰り返しの取得について質問です

前提

アリエクスプレスというサイトの商品ページが在庫切れになっていないかどうかをチェックするプログラムを作りたいです。
エクセルのA列にアリエクスプレスのURLがズラッと並んでいて、
それらが在庫切れになっていないかをチェックするプログラムです。
情報の取得に失敗した場合に隣のB列の同じ行に「在庫切れ」と入力します。(成功したときは「在庫あり」と入力します)

問題はXPathでの要素の取得で躓いていて、商品ページの価格の部分を取得したいのですが、
例えば、セール中の商品とそうでない商品によってXPathが若干変わったりします。(人間からしたら同じ場所であっても)
こういう場合はどうやって要素を取得すれば良いのでしょうか?

該当のソースコードは論理演算子のorを使って、
「XPathのパターン1」or「XPathのパターン2」
という書き方をして、どちらかが取得できれば「在庫あり」を入力するように作りました。
しかし実行してみると、どちらかのXPathが取得できないとエラーになってしまいます。

サンプルの商品ページを載せておきます。

https://ja.aliexpress.com/item/1005004115273699.html?spm=a2g0s.8937460.0.0.39be2e0ecoqFRv&gatewayAdapt=glo2jpn

https://ja.aliexpress.com/item/32956414357.html?spm=a2g0s.8937460.0.0.41842e0e2DHeYq&gatewayAdapt=glo2jpn

価格の部分のXPathですが、
上のページのXPathが「//[@id="root"]/div/div[2]/div/div[2]/div[5]/div[1]/span」
下のページのXPathが「//
[@id="root"]/div/div[2]/div/div[2]/div[4]/div[1]/span[1]」
となっています。

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

実行時エラー7 no such element error

該当のソースコード

vba

Sub test() Dim Driver As New Selenium.WebDriver Dim i As Long SafeOpen Driver, Chrome With ThisWorkbook.Worksheets("test") For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row Driver.Get .Range("A2").Offset(i - 1, 0) If Driver.FindElementByXPath("//*[@id=""root""]/div/div[2]/div/div[2]/div[4]/div[1]/span").Text Or Driver.FindElementByXPath("//*[@id=""root""]/div/div[2]/div/div[2]/div[5]/div[1]/span").Text Then Worksheets("test").Cells(1 + i, 2) = "在庫あり" Else Worksheets("test").Cells(1 + i, 2) = "在庫切れ" End If Next End WithEnd Sub

試したこと

上記のコード以外で試したことは、

「Aの要素取得をする
これが無理ならBの要素取得をする
それもダメなら在庫切れ」

という動きをどうやって実装すればいいか考えてIF else文を試しましたが、実行時エラーが出てしまいました。

他にはエラー処理の「Resumeステートメント」を使えばいいと考えたのですが、
調べて出てくる情報が初心者には分かりづらいものばかりで、まだ使い方がよく理解できていない状況です。

Aの要素取得

エラーがでた場合Bの要素取得

それでもエラーがでた場合は在庫切れ

AかBの要素取得に成功した場合は在庫あり

という形にすれば動かせそうに思うのですが、調べが足りてないです。

また、XPath以外のセレクターでの取得も試みました。
class name で取得しようとしたのですが、
driver.FindElementByClass~ の「~」の部分に何を入れれば良いのかが分かりませんでした。
デベロッパーツールでクラス名のコピーの選択肢が存在しないです。
HTMLからどの部分を抜き取って入れれば良いのかが分かりませんでした。

いろいろ試しましたが全て上手くいかず困っています。
どの方法が最も良いのかご教授していただけるとありがたいです。

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

Windows10
chrome

コメントを投稿

0 コメント