久しぶりに動かしたらChromeとWebdriverのバージョンがどうにも合わなくなったので、Edgeを使うように変更しました。
作動させる前に、手動でwebdriverをインストールする。
その他、アカウントやパスワードを差し替える。
これで11/28現在動いて数十個クーポン登録できました。
---以下VBAマクロ
Sub ベネフィットステーションnanaco登録マクロ()
Dim Driver As New Selenium.WebDriver
Dim target As Range
Dim myBy As New By
Dim nanacoURL As String
Dim flag As Boolean
'クロムのWebdriverのバージョンが合わないのでEdgeを使う
Driver.Start "edge"
'Driver.Start "chrome"
Driver.Get "https://mypage.bs.benefit-one.inc/mypage/coupon/"
'自分のべネアカに変える
Driver.FindElementByCss("#username").SendKeys "XXXXXXXX"
'自分のパスワードに変える
Driver.FindElementByCss("#password").SendKeys "XXXXXXXX"
Driver.FindElementByCss("#password-login-btn").Click
Driver.Wait 2000
' マイクーポンに以前のクーポンがある場合 nth-child(X) のXを変えるといいかも
' 実際に動かして確認
Driver.FindElementByCss("#capture > main > div > div.mb-6 > ul > li:nth-child(1) > div > div:nth-child(2) > h3").Click
'Driver.FindElementByCss("#capture > main > div > div.mb-6 > ul > li:nth-child(X) > div > div:nth-child(2) > h3").Click
Driver.Wait 1000
i = 1
Do
Driver.FindElementsByClass("c-checkbox__box")(i).Click
i = i + 1
xpath1 = "/html/body/div[1]/div/div[1]/main/div/div/div[1]/div/div[2]/div/div/ul/li["
xpath3 = "]/div/div/label/div[1]"
xpath2 = i
xpath4 = xpath1 & xpath2 & xpath3
flag = Driver.IsElementPresent(myBy.XPath(xpath4))
Loop Until flag = False
Driver.FindElementByCss("#capture > main > div > div > div.p-mypage-coupon__header > div > div:nth-child(2) > div > div > div > div > button").Click
Driver.Wait 1000
For j = 1 To i - 1
xpath1 = "/html/body/div[1]/div/div[1]/main/div/div/div[1]/div[2]/div[2]/div/div[1]/div[2]/ul/li["
xpath3 = "]/div/div[3]/p[2]/span"
xpath2 = j
xpath4 = xpath1 & xpath2 & xpath3
ActiveSheet.Cells(j, 1) = Driver.FindElementByXPath(xpath4).Text
Next j
k = 1
Do
nanacoURL = Cells(k, 1)
If nanacoURL = "" Then Exit Do
Driver.Start "edge"
Driver.Get nanacoURL
'nanaco番号入力
Driver.FindElementByCss("#nanacoNumber01").SendKeys "XXXXXX"
'会員メニュー用パスワード入力
Driver.FindElementByCss("#pass").SendKeys "XXXXXX"
Driver.FindElementByCss("#loginPass01").Click
Driver.FindElementByCss("#gift > a").Click
Driver.FindElementByCss("#register > form > p > input[type=image]").Click
Driver.SwitchToNextWindow
FWFlag = False
Do
FWFlag = Driver.IsElementPresent(myBy.Css("#submit-button"))
Driver.Wait 1000
Loop Until FWFlag = True
Driver.FindElementByCss("#submit-button").Click
FWFlag1 = False
FWFlag2 = False
Do
FWFlag1 = Driver.IsElementPresent(myBy.Css("#nav2Next > input[type=image]:nth-child(2)"))
FWFlag2 = Driver.IsElementPresent(myBy.Css("#navNext > a > img"))
Driver.Wait 1000
Loop Until FWFlag1 = True Or FWFlag2 = True
If FWFlag1 = True Then
Driver.FindElementByCss("#nav2Next > input[type=image]:nth-child(2)").Click
Driver.Quit
Set Driver = Nothing
Else
Driver.Quit
Set Driver = Nothing
End If
k = k + 1
Loop
End Sub