実現したいこと
ウェブスクレイピングにおいて期間を設定するためにカレンダーをクリックし,期間を入力したい
発生している問題・分からないこと
カレンダーをクリックするところまではできましたが,6行目のsend_keysで入力しようとしたらエラーがでました.
エラーメッセージ
error
1AttributeError: 'NoneType' object has no attribute 'send_keys'
該当のソースコード
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By FROM = "01-03-2024" start_span = driver.find_element(By.XPATH,("//input[@name='from']")).click() start_span.send_keys(FROM)
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
start_span[0].send_keys(FROM)
こちらのコードをためしましたが今度は
TypeError: 'NoneType' object is not subscriptable
このようなエラーが出ました
補足
特になし
> start_span = driver.find_element(By.XPATH,("//input[@name='from']")).click()
click() メソッドは値を返しません。そのため、変数 start_span は None になります。ウェブページの構造が不明なので推測になりますが、対象の input 要素が表示されている状態(visible)であれば click() は不要かもしれません。
start_span = driver.find_element(By.XPATH,("//input[@name='from']"))
start_span.send_keys(FROM)


https://teratail.com/help/question-tips
は読みましたか?
読んだ結果を本文に反映ください。解決のヒントを探れるかもしれません。
コメントありがとうございます。
click()メゾットが値を返さないことを知らなかったので勉強になりました!
start_span = driver.find_element(By.XPATH,("//input[@name='from']"))
start_span.send_keys(FROM)
を試したところ問題が解決しました!
ベストアンサーに選びたいのでmelianさん,同じ内容を回答欄に投稿いただけますでしょうか?
解決おめでとうございます!
解決方法をまとめて、「自己解決」として回答してください!
同じように困っている人の貴重な情報になると思います。
> click()メゾットが値を返さないことを知らなかったので
あらかじめ知っている必要はありません。
エラーメッセージから、start_span の値がが None である事が明らかなので、それに代入している driver.find_element(By.XPATH,("//input[@name='from']")).click() が Noneを返していることは明らかです。
x = foo()
print(x)
で abc と表示されれば、foo() がabcを返していることは明らかというのと全く同じ話です。
> teratailやGoogle等で検索した
検索した? 本当ですか?
https://teratail.com/search?q=AttributeError%3A%20%27NoneType%27%20object%20has%20no%20attribute
回答1件
あなたの回答
tips
プレビュー