【Python】Seleniumで「AttribiteError」

スポンサーリンク

同僚から『Web上の購入履歴を取得してほしい』という要望があった。
久々のSeleniumネタが来たので意気揚々と対応したけど、
いろんな事を忘れすぎてて動く環境を作るまでにコケまくったので、
ココに備忘録を残したい。

導入までの流れ


  • 自分の環境(AnacondaのSpyder)で作成/動作確認
  • 同僚のパソコンにpyファイルをコピー(同僚のパソコンにはPythonインストール済)
  • バッチファイル(.bat)の作成
  • バッチファイルを起動させて、動作確認

動作確認の時に問題が発生した!
バッチファイルを起動したらすぐに黒いウィドウが落ちるのだ。。。
なんのエラーで落ちているかわからないw
try-exceptにも引っ掛からないしそもそも論の所なんだと予想はしているけど。。。

ModuleNotFoundErrorが発生していた

簡易的なIDEがあったので、それで実行してみると、下記エラーが発生していた。

ModuleNotFoundError: No module named 'selenium'

同僚のパソコンにはSeleniumのパッケージがインストールされていなかったらしい。。。
本当にそもそも論だった。。。本当に環境構築って大切だよね!
そういう事で、インストールを実施する。。。

っって、自分『アナコンダプロンプトからしかしたことないw』っと気づいた。
コマンドプロンプトからインストールする方法を次に紹介する。

コマンドプロンプトからパッケージをインストール

コマンドプロンプトからでもインストールは可能なので、紹介する。

py -m pip install selenium

アナコンダプロンプトからだと、『pip ~~~』でいいんだけど、
コマンドプロンプトからだと頭に『py -m』をつける必要があるらしい。

AttribiteErrorが発生した

次に発生したエラーは下記の通り

AttributeError: 'WebDriver' object has no attribute 'find_element_by_class_name'

『AttributeError』って関数/定義がないときに発生するやつなんだよね。。。
それもエラーになっているのは、『find_element_by_class_name』っていう関数。。。
自分の環境下では動いているのに。。。

Seleniumのバージョンを合わせよう

現在インストールされているseleniumは4.9.1でした。
調べてみると、4.3.0以降から関数名が変わったようです。
プログラムを最新にしてもいいのですが、面倒なので、seleniumバージョンを指定してインストールするようにします。
今回は、4.1.0をインストールしたいと思います。

py -m pip install selenium==4.1.0

やったぁぁ~~~~っっ!!!動いたぁ~‼‼‼‼‼‼‼‼‼

まとめ

久々にPythonをしたら、色々忘れていましたね。
今回の収穫としては、2点です。

  • コマンドプロンプトからパッケージのインストール方法
  • Selenium 4.3.0から関数名が変わっていた

最新のVersionで書き直しても良かったんだけど、そんな時間がなかったのでSeleniumのバージョンを合わせる事で対応しちゃいました。
なので、Seleniumの最新のバージョンで実行できるようにしたいなぁ~と思いつつ。。。
でも、しないだろうなw

コメント

タイトルとURLをコピーしました