VBAマンの強い味方SeleniumBasicですが、
2021年6月はじめのChromeのアップデートにより、
どうやら element.value で Inputの中のvalue値を取得することができなくなったぽいです。
今までは
Chromedriver.findelementbyid("hoge").value
みたいにすればvalue値をとれていたのですが、無反応(というかデフォルト設定のまま)になります。
たとえば、sendkeyでInput要素に入力しても、それを.valueで取得することができません。
(だからsendkeyでちゃんと値が入ったかどうか確認できない)
しょうがないので、Input要素の中を全選択してコピーして、VBAでクリップボードから値を得る
という無茶苦茶な方法で対処することにしました。
(ChromeやChromeDriverの更新で不要になる可能性も高いです)
コード内の「Element」は他でChromedriver.findelementbyidでもしてください。
あと参照設定でMSFormsを使えるようにしておく必要があります。
Function getValuefromInput(Element)
'クリップボードを空に
Application.CutCopyMode = False
With New MSForms.DataObject
'一旦ダミー値をクリップボードに入れる
With CreateObject("Forms.TextBox.1")
.MultiLine = True
.text = "|||||hogehoge|||||"
.SelStart = 0
.SelLength = .TextLength
.Copy
End With
'キーボードを用意(Ctrlキーのため)
Set Keyboards = New Keys
'該当エレメントをクリックしてコピー
Element.Click
Element.SendKeys Keyboards.Control & "A" & "C"
Driver.Wait 100
'クリップボードの中身を取得
.getfromClipboard
mytext = .GetText
'ダミー値のままだったら、空っぽってことで””を返す
If mytext = "|||||hogehoge|||||" Then
getValuefromInput = ""
Else
getValuefromInput = mytext
End If
End With
End Function