【Python】find_element *での警告文に対処する。【Selenium】

python

Seleniumで今まではfind_elemeted_by_idのように使用していましたが、下記のような警告文が出るようになりました。(2022/2月)

DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead

このまま使用はできるのですが、赤文字で表示されると気になりますよね笑
原因と対処方法を説明していきます。

スポンサーリンク

警告文の意味

DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead

和訳:非推奨の警告
find_element_by_* コマンドは非推奨です。代わりに find_element() を使ってください。

とのことですので、find_elementメソッドを使用すれば警告は起きないです。

find_element(), find_elements()の使い方

find_element()

element = driver.find_element(by="id", value="title")
print(element.text)

値を一つ取得したい場合には上記の方法を用います。
戻り値はインスタンスオブジェクトで帰ってきますので、インスタンス変数のtextを指定することで、内容が確認できます。

find_elements()

elements = driver.find_elements(by="id", value="title")
for element in elements:
    print(element.text)

値を複数取得したい場合は上記の方法を用います。
戻り値はリスト形式で帰ってきます。リストの中に入っているのはインスタンスオブジェクトですので、find_element()と同じくインスタンス変数textを指定することで値を取得することができます。

引数について

引数については2つあります。

・by:抽出したいエレメントを文字列で指定する。(デフォルト:”id”)

・value:抽出したい文字列を指定する(デフォルト:None)

引数:byについて

byの引数については非推奨メソッドのbyの後の文字をアンダーバー(_)をスペースに変換して渡せばOKです。
下記にリストにしておきましたので、参考にしていただければと思います。

非推奨のメソッド名byの引数
find_element_by_id()“id”
find_element_by_class_name()“class name”
find_element_by_css_selector()“css selector”
find_element_by_name()“name”
find_element_by_link_text()“link text”
find_element_by_partial_link_text()“partial link text”
find_element_by_tag_name()“tag name”
find_element_by_xpath()“by_xpath”

引数:valueについて

valueの引数は非推奨のメソッドの引数をそのまま渡せばOKです。

まとめ

非推奨とfind_element()を比較したのか下記のコードです。

# byの値(文字数)が少ない場合
driver.find_element_by_id("title")
driver.find_element(by="id", value="title")
driver.find_element("id","title")

# byの値(文字数)が多い場合
driver.find_element_by_css_selector("title")
driver.find_element(by="css selector", value="title")
driver.find_element("css_selector", "title")

ぶっちゃけあんまり変わってないような気がしますね笑
メソッド名が短くなって見やすくなり、可読性が高くなったような気がしないでもない・・・のか?笑

python
スポンサーリンク
ぼんくらブログ

コメント

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