0
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?

More than 1 year has passed since last update.

SeleniumWebDriverをapiからpythonで更新する

Last updated at Posted at 2023-01-01

はじめに

「selenium webdriver 自動」や「webdriver 更新 自動」などで検索しても
webdriver-managerを使った方法の紹介の方が多く感じたので書くことにしました。

環境

Windows11
python 3.10.4
requests 2.28.1

実際のコード

pip install requests
main.py
import os
import urllib.request

import requests


def main():

    # chromium公式の発表しているchrome_driverの最新バージョン名を取得
    CHROME_LATEST_VERSION = requests.get("http://omahaproxy.appspot.com/linux?channel=stable").text
    # 上記のバージョン名からメジャーバージョン名を取得。
    CHROME_LATEST_MAJOR_VERSION = CHROME_LATEST_VERSION.split(".")[0]
    # chrome_driverのapiからメジャーバージョンの最新driverのバージョン名を取得
    CHROME_DRIVER_VERSION = requests.get(f"https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{CHROME_LATEST_MAJOR_VERSION}").text

    # windows用chrome_driverのurlとzipファイル名の設定
    CHROME_DRIVER_WINDOWS_ZIP = "chromedriver_win32.zip"
    CHROME_DRIVER_WINDOWS = f"http://chromedriver.storage.googleapis.com/{CHROME_DRIVER_VERSION}/{CHROME_DRIVER_WINDOWS_ZIP}"

    # webdriver保存用のディレクトリの作成
    save_dir = f"./webdrivers/{CHROME_DRIVER_VERSION}"
    os.makedirs(save_dir, exist_ok=True)

    # zipのダウンロード
    file_name = f"{save_dir}/{CHROME_DRIVER_WINDOWS_ZIP}"
    urllib.request.urlretrieve(url=CHROME_DRIVER_WINDOWS, filename=file_name)


if __name__=="__main__":
    main()

コードの詳細

# chromeの最新バージョン名を取得
CHROME_LATEST_VERSION = requests.get("http://omahaproxy.appspot.com/linux?channel=stable").text
# 上記のバージョン名からメジャーバージョン名を取得。
CHROME_LATEST_MAJOR_VERSION = CHROME_LATEST_VERSION.split(".")[0]
# chrome_driverのapiからメジャーバージョンの最新driverのバージョン名を取得
CHROME_DRIVER_VERSION = requests.get(f"https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{CHROME_LATEST_MAJOR_VERSION}").text

Chrome、ChromeWebDriverそれぞれのメジャーバージョンの違いによって発生するエラーを防ぐため、
Chromeの最新安定バージョンとChromeWebDriverの最新安定バージョンを取得。

詳細は以下の参考記事↓
https://dev.classmethod.jp/articles/getting-chrome-driver-version-fitted-chrome-latest-stable-version/

# windows用chrome_driverのurlとzipファイル名の設定
CHROME_DRIVER_WINDOWS_ZIP = "chromedriver_win32.zip"
CHROME_DRIVER_WINDOWS = f"http://chromedriver.storage.googleapis.com/{CHROME_DRIVER_VERSION}/{CHROME_DRIVER_WINDOWS_ZIP}"

windows用ChromeWebDriverの名称とAPIエンドポイントのURLの設定。

# zipファイルのダウンロード
file_name = f"{save_dir}/{CHROME_DRIVER_WINDOWS_ZIP}"
urllib.request.urlretrieve(url=CHROME_DRIVER_WINDOWS, filename=file_name)

urllib.request.urlretrieveで直接zipファイルをダウンロードしている

参考

他にも記事ありました。
http://holiday-programmer.net/webdriver_auto_update/

おわりに

最初はwebdriver-managerをおとなしく使っていましたが、ソース内にエンドポイントのURLがあることを見つけ、
自分で作ってみることにしました。

このコードでは他OSへの対応やZipの処理もなく、実際に使えるレベルではないので
今回のコードをもとに拡張していきたいと思います。

0
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
0
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?