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?

Selenium WebDriverのTypeErrorを解決する方法と注意点

0
Posted at

※この記事は、個人技術ブログ CodeArchPedia.com の技術メモ(要約)です。

Seleniumを使った自動テスト環境で、突然 TypeError: WebDriver.__init__() got an unexpected keyword argument 'executable_path' が出てきて、環境構築が止まってしまった。いつも通りにChromeDriverをパス指定で初期化しようとしたら発生したので、なぜエラーが出たのか調査した。

何が起きたか(課題)

遭遇したエラーは、Selenium 4.0以降へのバージョンアップが主な原因だった。具体的には以下の問題が発生していた。

  • Selenium 3.x世代の古い初期化構文(executable_path引数)が4.xで廃止された。
  • エラーメッセージが示す通り、webdriver.Chrome() のコンストラクタが予期しない引数を受け取ってしまった。
  • これにより、既存のテストコードが動作しなくなり、プロジェクトの進行がストップした。

どう解決したか(概要)

このTypeErrorを解消し、Selenium 4に対応させるアプローチは主に2つあった。古いコードでは以下のように直接パスを指定していた。

driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

推奨される解決策は、Service オブジェクトを経由してドライバーを初期化する方法だ。selenium.webdriver.chrome.service.Service をインポートし、そのインスタンスをWebDriverのコンストラクタに service= 引数として渡す必要がある。

あるいは、パス管理の手間を完全に無くすため、webdriver-manager を導入し、ChromeDriverManager().install() を使って適切なドライバーパスを自動解決する方法を採用した。これにより、環境差異に起因する問題を予防できる。

また、オプション引数も chrome_options から単なる options に変更されていたため、併せて修正が必要だった。

効果(Before/After)

手動でのパス指定や古いAPI呼び出しを廃止した結果、コードがW3C WebDriver仕様に準拠し、今後のバージョンアップに対する耐性が向上した。

項目 旧式 (Selenium 3.x) 現行 (Selenium 4+)
パス指定 executable_path=PATH service=Service(PATH) または webdriver-manager
オプション指定 chrome_options=OPTIONS options=OPTIONS

これにより、実行環境が変わってもドライバーのパスについて悩む必要がなくなり、テストコードの可搬性が高まった。


🚀 詳細な設定とコードはこちら

具体的なWAFのルール設定や、より詳細なログ解析データは元のブログで公開しています。

👉 Selenium WebDriverのTypeErrorを解決する方法と注意点

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?