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

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

 

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

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