1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mac+python+Seleniumで動かすChromeがめっちゃ遅い問題の解消

Posted at

Apple siliconの乗ったMacを用いてpython+SeleniumでChromeを制御するコードを使っていたのですが、突然遅くなりましてデバッグしました。解決法がわかったので書きます。

なおこちらのエントリーの方も同じ問題に遭遇しているようでした。自分は違うやり方で解決しましたが参考になる場合はこちらもぜひ:

Seleniumのアーキテクチャの確認

まずpython+SeleniumでChromeを立ち上げ、Seleniumが想定しているアーキテクチャを確認します。Chromeが立ち上がったら左上のメニューバーから"Google Chrome"→"Google Chromeについて"を開くと次のような画面が表示されます:
x86_64

x86_64 translatedと表示されています。自分のMacのアーキテクチャはuname -mというコマンドを実行すると表示できますが、Apple Siliconなら(現状は)arm64と表示されるはずです。x86_64arm64とは違うので、arm64のChromeDriverをダウンロードして指定する必要があります。

試したdriver

今回3種類のdriverを試しました。

1. (失敗) ChromeDriverManagerを用いてInstall

pythonでSeleniumを用いる場合、以下のようにChromeDriverManagerを用いてinstallして使うと簡単です:

options = webdriver.ChromeOptions()
driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)

ただしこのやり方ではx86_64のままでした。

2. (失敗) driver配布ページからStable版のdriverをダウンロード

このページからStable版のchromedriverをダウンロードし、次のように指定して使用しました:

driver_path = '/path/to/chromedriver-mac-arm64-128/chromedriver'

options = webdriver.ChromeOptions()
chrome_service = webdriver.ChromeService(executable_path=driver_path)
driver = webdriver.Chrome(options=options, service=chrome_service)

なお、2024/09/15現在でのStableのVersionは128.0.6613.137でした。この方法でもx86_64のままでした

3. (成功) driver配布ページからBeta版のdriverとbinaryをダウンロード

同じページからStable版のchromedriver、およびbinaryをダウンロードし、次のように指定して使用しました:

driver_path = '/path/to/chromedriver-mac-arm64-129/chromedriver'
binary_path = '/path/to/chrome-mac-arm64-129/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing'

options = webdriver.ChromeOptions()
options.binary_location = binary_path
chrome_service = webdriver.ChromeService(executable_path=driver_path)
driver = webdriver.Chrome(options=options, service=chrome_service)

なおbinaryについては次のコマンドを走らせるなどして実行可能にする必要があります:

xattr -cr "/path/to/chrome-mac-arm64-129/Google Chrome for Testing.app"

なお、2024/09/15現在でのBetaのVersionは129.0.6668.42でした。こちらの方法を用いることでarm64用のchromeが動くようになりました。めでたしめでたし。

(余談)根本原因

Version 128.0.6613.137においてmac-arm64用として配布されているdriverが実はx86_64用のものであることが原因のようです。Google groupsでも同様の問題を報告している方がいました:

お役に立てば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?