2020年5月24日日曜日

SeleniumBasic:Chromeバージョンアップ後にClickがエラー

コロナが治まるまでChromeのバージョンアップは休止と何かで読んだので、まだ80のままだと思ってました。先日Seleniumで動かそうとしたらドライバが古いとエラーが出て、83に上がってるのに気づきました。知らないうちに81に上がり、82はスキップしていたらしい。

で、80まで動いていたコードの一箇所でエラーが出てしまい焦りました。
検索結果をダウンロードするボタンをClickさせるのですが、対象はこんな感じです。

<form action="download" method="post" name="DataDownload">
    <input name="xxxxx" type="hidden" value="DownloadData" >
    (その他もろもろ)
    <input class="contentsBtn" type="submit" value="検索結果をダウンロード" >
</form>

検索結果が表示されると現れるボタンで、これまでは以下のようにClickさせてました。

Dim objDriver As ChromeDriver
Dim objTemp As Object

(中略)

    Set objTemp = objDriver.FindElementByName("DataDownload")
    If objTemp.IsDisplayed Then objTemp.Click

83ではIsDisplayedまでは通るのですが、Clickでエラーとなりました。

element not interactable: element has zero size

何を怒られているのかはわからない。
しょうがないのでclassの方で要素を取得してみました。

Set objBtns = objDriver.FindElementsByClass("contentsBtn")
For Each objTemp In objBtns
    If objTemp.Value = "検索結果をダウンロード" Then
       objTemp.Click
       Exit For
    End If
Next

これならClickできました。
別のPCでChromeを強制的に80にして試すと、今でも前のコードでClickできました。とにかく81または83で何か仕様が変わったようです。