😇

Colaboratory & Seleniumを使った自動化ツールが定期的に動かなくなるので動くようにする

2023/08/16に公開

東屋慶名(隠語)の魂(プロダクトの想い)、具現化(Seleniumを使った自動化ツールの開発)!
更に突き進み時代(Chrome)は進化(Version up)!
間近に迫る世紀末眼下(ツールは壊れる)行こうか次の時代目指し(メンテ)さあ進もうか!!

はい

プロダクトを改善するほうがトータル良いのですが、色々リリースのスケジュールが重なってたり、QAリソースを直近確保できなかったり、そもそも開発者アサインが難しかったり、ラジバンダリ(?)すると、なかなか現場の負荷というのが下がりません

とあるチームへの支援の担当にアサインされた時がありまして、色々ヒアリングしてタスクを並べた結果、工数削減が大きい課題がありました。当時プロダクトへの理解が浅く(いまも正直キャッチアップ中ですが)、周りに相談した結果、↑に書いたような内容でなかなか前に進むことができず、どうしようかなっと思っていました

そこで 勝手に サクッとできそうな自動化ツールを導入した結果、現場のコストが4 ~ 5時間/日は解消されました。めでたしめでたし...

とはなりません。
作ったならば運用(メンテ)がついて回ります。これは別途反省する話なので、今回は言及しませんが、ともかく一度導入された運用を止めるのは前の運用工数に逆戻りするので、それだけは自分の中で避けねばということになりました

つまり、Selenium + Chrome + Chrome driverのバージョンアップとの戦い になります(なぜ)

技術スタック

  • Google Colaboratory(会社がGoogleアカウントを持っている&画面作らず非エンジニアの方々に提供できる便利)
  • Selenium
  • Python3
  • Chrome + Chrome driver

こちらの神記事を参考にすれば一旦大丈夫

いつもありがとうございますmm

https://dev.classmethod.jp/articles/google-colaboratory-use-selenium/

うまくいかなかった人向け

※2023/08/16 現在

完璧と思えるスクリプトに見えるのですが、Chromeのバージョンが選考し、Driverがまだ更新されないという事象が発生することがありました

また、追加ライブラリも必要だったりするので、こんな感じで修正していきます

# 更新を実行
!sudo apt -y update

# ダウンロードのために必要なパッケージをインストール
!rm -f *.deb
# 足りなくなったら継ぎ足していく(今回はlibvulkan1)
!sudo apt install -y wget curl unzip libvulkan1
# 以下はChromeの依存パッケージ
!wget http://archive.ubuntu.com/ubuntu/pool/main/libu/libu2f-host/libu2f-udev_1.1.4-1_all.deb
!dpkg -i libu2f-udev_1.1.4-1_all.deb

# Chromeのインストール
!wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
!dpkg -i google-chrome-stable_current_amd64.deb

今回はChromeのバージョンが 116.0.... に対し、 curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE で取得できるDriverのバージョンが114.0....なのが問題でした

そのため、下記から必要なバージョンを指定して、ダウンロードするように変更します

https://googlechromelabs.github.io/chrome-for-testing/

# Chrome Driverのインストール
# 再実行した際に色々残っているとエラーになるので
!rm -rf /tmp/*
!wget -N https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/116.0.5845.96/linux64/chromedriver-linux64.zip -P /tmp/
!unzip -o /tmp/chromedriver-linux64.zip -d /tmp/
!cp -rf /tmp/chromedriver-linux64 /tmp/chromedriver
!chmod +x /tmp/chromedriver/chromedriver
!mv /tmp/chromedriver/chromedriver /usr/local/bin/chromedriver

バージョンが合えばおkです

!google-chrome --version
!chromedriver --version

Google Chrome 116.0.5845.96
ChromeDriver 116.0.5845.96 (1a391816688002153ef791ffe60d9e899a71a037-refs/branch-heads/5845@{#1382})

一度DriverのStableのバージョンを確認してみて、Chromeのバージョンと合わない場合は、 https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/... にバージョンを指定してダウンロードするようにするってスクリプト書くのが良いかなと思いました。今は時間がないのでパスしますが(まじのジャストアイディア)

苦労の歴史

Colaboratoryはノートブックの変更履歴が追えるので、歴史を書き出すことが可能です

※面白いかなって思って書き出したけど、そんな戦ってなかった。もっといっぱい修正した気はするんだけど

スタート

短い・・・良い時代だった(おじさん指向)

# Chromiumとseleniumをインストール
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin

途中

# Chromiumとseleniumをインストール
!echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google-chrome.list
!wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
!apt update
!apt install google-chrome-stable

そして今

アップデートがあったら追加していきます

CBcloud Tech Blog

Discussion