【Python】Chromeの拡大率のせいかも!Seleniumでボタンクリックしても動作しないとき

Python

こんにちは、しらすです。

先日スクレイピングツールを作っていて、めちゃくちゃはまったので記録として残します。ネットで調べてもなかなか出てこない現象だったので、困っている方がいらっしゃったら参考にしてみてください。

element.click()が突然動かなくなる(エラーもなし)

element = driver.find_element_by_id('upload-button')
element.click()

昨日まで動いていたクリックアクションが、突然動かなくなった!しかもエラーメッセージもない!

いろいろと試してようやく原因が判明しました。

原因:Chromeの拡大率が100%じゃないため、異なった場所をクリックしている

拡大率が100%以外だと、① seleniumで取得したelementの座標と、② elementをクリックする際の座標にずれが生じて正しいボタンをクリックできなくなくなる様子!

異なる座標をクリックしている
  • ①の時は、拡大/縮小率に関係なく100%の時の座標を取得する
  • ②の時は、拡大/縮小率に応じて表示された画面上で座標をクリックする

なぜこのようになっているか、色んな制約があるんだと思いますが一先ず原因が判明したので対応方法をご紹介します。

対応方法:最初に拡大率を100%にする!

ctrl + 0で拡大率をデフォルト(100%)に戻せます。driverを起動したら、まずはこの処理を実行することで対応できます。

from selenium.webdriver.common.keys import Keys

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL, '0')

コメント