質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Spyder

Spyderとは、Pythonで分析するために作られたIDEです。プログラムの編集・実行・入力補完・デバッグなどの基本的なIDE機能の他、科学用途の計算をするために要するライブラリも装備。公式・サードパーティ製のプラグインもあり、機能を拡張することもできます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

312閲覧

Selenium find_element クラス名が一致するのにエラーが起きる

Yuta_swift

総合スコア3

Spyder

Spyderとは、Pythonで分析するために作られたIDEです。プログラムの編集・実行・入力補完・デバッグなどの基本的なIDE機能の他、科学用途の計算をするために要するライブラリも装備。公式・サードパーティ製のプラグインもあり、機能を拡張することもできます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2024/05/20 08:56

実現したいこと

エラーに発生しないするのとエラーになっていた原因を知りたい

発生している問題・分からないこと

find_element(By.CLASS_NAME, "クラス名")を実装中に存在するクラス名を指定したのにも関わらずエラーになりました。色々調べてみましたが、解決しなかったのでご協力お願いします。
イメージ説明
イメージ説明

エラーメッセージ

error

1NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"._aagv"} 2 (Session info: chrome=125.0.6422.61); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception

該当のソースコード

Python

1articles = driver.find_element(By.CLASS_NAME, "_aagv") 2print(articles.text)

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

find_element系のサイトを見て試したが、解決しませんでした。

補足

環境:Mac M1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2024/05/20 09:26

implicitly_wait() を入れて、要素がロードされるまで待つ様にしてみてください。 driver = webdriver.Chrome() driver.implicitly_wait(10) # 最大で10秒待機 driver.get(url)
guest

回答1

0

ベストアンサー

開発者ツールでの確認は、Selenium実行中に確認していますか?

find_element(By.CLASS_NAME, "クラス名")を実装中に存在するクラス名を指定したのにも関わらずエラーになりました。

発想が間違っています。お書きのエラーメッセージが出たということは、「その時点でそのHTMLにそのクラスの要素は無かった」が事実です。
(参考:driver.find_element(~)の直前に、print(driver.page_source) を入れて、それで表示されるHTMLを確認しましょう。その要素は無いはずです)

なので、「別のタイミングでブラウザでページを見るとその要素があるのに、Seleniumで処理した時はそのタイミングでなぜその要素がないのか?」が調べるべき事です。
よくあるケースは、「まだその要素が出来ていない(しばらく待てば出来る)」です。
他には、
・その前の部分で間違っていて、期待しているのと違う内容のページになっている
・サーバー側でSeleniumを検知して違うページを出している
など。

投稿2024/05/20 09:48

otn

総合スコア85766

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuta_swift

2024/05/21 07:25

回答ありがとうございます。 試したところ問題が解決しました! また、丁寧に問題点も教えていただきありがとうございました! ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問