NoSuchElementException: An element could not be located on the page using the given search parameters.

Python
本ページはプロモーションが含まれています

はじめに

Selenium(python)を使って要素を取得しようとしているときに

NoSuchElementException: An element could not be located on the page using the given search parameters.

というメッセージが表示されました。
作っていたプログラムではWindowsを自動化するときに使用していましたが、おそらくこのメッセージはWebクローラーやスクレイピングでも発生すると思います。

原因

表示されているメッセージは

NoSuchElementException: An element could not be located on the page using the given search parameters.

「与えられたキーワード(クラス名やIDなど)に合致する要素はページ内にありません」と言ってます。

解決方法

解決方法として2点注意する事があります。
まず1つ目ですが、find_elementなどで「取得しようとした要素の名称が誤っていないか」どうかを確認。

Webスクレイピングなら例えばGoogle ChromeのF12を押してディベロッパーツールで要素を確認。
(Windowsの自動化ならinspect.exeで指定した要素の名前があっているか)

2つ目としては要素があるのに取得できていない場合。
この場合は取得時に「Web画面やアプリがきちんと描画(表示)出来ているか」確認してみて下さい。

Webページでも重たいページなどでは少し待たないと要素が取れない場合があります。
Seleniumで描画するまで待つ「implicitly_wait」等いくつかのライブラリがありますのでそちらで対応するか、Sleepなどを入れて一定時間待つ処理を入れてみてください。
実際、このエラーメッセージが出る時はこちらのケースが多いです。

また、Webページ遷移やWindowアプリの場合に新しいウインドウを開く時は、少し待ち時間を入れた方がいいです。

僕が遭遇したこのエラーケースはWindowアプリがVPN接続を行うのに10秒ほど待たないと行けなかったのですが、Waitする時間に余裕を持たせておらずエラーが発生していました。

おわりに

今回はSeleniumでのエラーメッセージについてでした。
このエラーメッセージはよく出会うかもしれません。
少し待ち時間を入れてあげるのがポイントかと思います。

最後までお読みいただきありがとうございました。
この記事がお役に立ったのならば嬉しいです。

 

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