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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

Q&A

解決済

1回答

1380閲覧

seleniumで自動ログインをしたいがよくわからないエラーに怒られる

otinko

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

0グッド

0クリップ

投稿2023/10/11 11:48

実現したいこと

seleniumによる自動ログイン

発生している問題・エラーメッセージ

Traceback (most recent call last): File "/Users/kou/Desktop/selenium_work/WORK/application.py", line 36, in <module> open_web() File "/Users/kou/Desktop/selenium_work/WORK/application.py", line 26, in open_web mail_address = driver.find_element(By.ID,"edit-name") File "/Users/kou/micromamba/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 738, in find_element return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"] File "/Users/kou/micromamba/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 344, in execute self.error_handler.check_response(response) File "/Users/kou/micromamba/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed from unknown error: web view not found (Session info: chrome=118.0.5993.70) Stacktrace: 0 chromedriver 0x0000000106034e08 chromedriver + 5025288 1 chromedriver 0x000000010602bc23 chromedriver + 4987939 2 chromedriver 0x0000000105bcde67 chromedriver + 409191 3 chromedriver 0x0000000105ba1be4 chromedriver + 228324 4 chromedriver 0x0000000105c49ebf chromedriver + 917183 5 chromedriver 0x0000000105c5fb56 chromedriver + 1006422 6 chromedriver 0x0000000105c442b3 chromedriver + 893619 7 chromedriver 0x0000000105c0eeb9 chromedriver + 675513 8 chromedriver 0x0000000105c100ee chromedriver + 680174 9 chromedriver 0x0000000105ff6819 chromedriver + 4769817 10 chromedriver 0x0000000105ffb893 chromedriver + 4790419 11 chromedriver 0x000000010600266e chromedriver + 4818542 12 chromedriver 0x0000000105ffc5bd chromedriver + 4793789 13 chromedriver 0x0000000105fce98c chromedriver + 4606348 14 chromedriver 0x000000010601ab78 chromedriver + 4918136 15 chromedriver 0x000000010601ad30 chromedriver + 4918576 16 chromedriver 0x000000010602b85e chromedriver + 4986974 17 libsystem_pthread.dylib 0x00007ff808c311d3 _pthread_start + 125 18 libsystem_pthread.dylib 0x00007ff808c2cbd3 thread_start + 15

該当のソースコード

application.py

1import time 2from selenium.webdriver.common.by import By 3from selenium import webdriver 4from selenium.webdriver.chrome.options import Options 5from selenium.webdriver.chrome import service as fs 6 7 8CHROMEDRIVER = "/../chromedriver" 9name = "MailAdress" 10password = "PassWord" 11# 対象ページ 12URL = "https://www.carenet.com/login.php" 13 14 15# ドライバー指定でChromeブラウザを開く 16def open_web(): 17 chrome_service = fs.Service(executable_path=CHROMEDRIVER) 18 options = Options() 19 options.add_argument(f'service={chrome_service}') 20 driver = webdriver.Chrome(options=options) 21 driver.get(URL) 22 driver = webdriver.Chrome(options=options) 23 time.sleep(60) 24 mail_address = driver.find_element(By.ID,"edit-name") 25 mail_address.send_keys() 26 password = driver.find_element(By.ID,"edit-pass") 27 password.send_keys(password) 28 submit_button = driver.find_element(By.ID,"edit-submit") 29 submit_button.click() 30 time.sleep(60) 31 32 33 34open_web() 35

試したこと

エラーメッセージググったがよく分からず

補足情報(FW/ツールのバージョンなど)

該当ページにreCAPTCHAあり

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

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

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

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

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

meg_

2023/10/11 13:20

> 該当ページにreCAPTCHAあり スクレイピングNGのサイトなのでは?
guest

回答1

0

ベストアンサー

getしてからdriverの値を再度代入して、getの結果を捨てているからでしょう。
何も表示されてないページで、find_elementしてるので、そういうエラーなのでしょう。
ブラウザ画面見ずに開発してるのでしょうか?

投稿2023/10/11 13:28

otn

総合スコア86295

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

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

otinko

2023/10/11 14:47 編集

ご指摘の通り修正したら上手く行きました。 ありがとうございます。 しかし、別のエラーが出てきました。 (base) kou@kounoMacBook-Pro selenium_work % /Users/kou/micromamba/bin/python3 /Users/kou/Desktop/selenium_work/WORK/applicat ion.py Traceback (most recent call last): File "/Users/kou/Desktop/selenium_work/WORK/application.py", line 27, in <module> password.send_keys(password) File "/Users/kou/micromamba/lib/python3.9/site-packages/selenium/webdriver/remote/webelement.py", line 231, in send_keys Command.SEND_KEYS_TO_ELEMENT, {"text": "".join(keys_to_typing(value)), "value": keys_to_typing(value)} File "/Users/kou/micromamba/lib/python3.9/site-packages/selenium/webdriver/common/utils.py", line 137, in keys_to_typing characters.extend(val) TypeError: 'WebElement' object is not iterable
otinko

2023/10/11 22:12

自己解決しました。 理由はわかりませんが、以下のように書き換えたところ動きました。 import time from selenium.webdriver.common.by import By from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome import service as fs name = "" password = "" # 対象ページ URL = "https://www.carenet.com/login.php" #URL = "https://www.google.com" # ドライバー指定でChromeブラウザを開く chrome_service = fs.Service() options = Options() options.add_argument(f'service={chrome_service}') driver = webdriver.Chrome(options=options) driver.get(URL) time.sleep(1) mail_address = driver.find_element(By.ID,"edit-name").send_keys(name) time.sleep(1) password = driver.find_element(By.ID,"edit-pass").send_keys(password) time.sleep(1) submit_button = driver.find_element(By.ID,"edit-submit") submit_button.click() time.sleep(60)
otn

2023/10/12 00:28 編集

> しかし、別のエラーが出てきました。 は、 > password = "PassWord" > password = driver.find_element(By.ID,"edit-pass") > password.send_keys(password) とpasswordという1つの変数を同時に複数の目的で使おうとしているのが原因ですが、 こういう間違いをするようでは、コーディングの際には、 変数名とその意味とデータ型を表にして、それを見ながらコーディングした方が良いですね。 修正後の > password = driver.find_element(By.ID,"edit-pass").send_keys(password) も変です。 20行くらいの短いプログラムなのに、書いている途中で変数名の意味を忘れてしまう人は、 このサイトでたくさん見かけます。 (あるいは、忘れているのではなく、そもそも「変数とは何か」が理解できてないのかも)
otinko

2023/10/12 21:36

なるほど!書いてるときは普通に気づかなかったです笑 ご教示ありがとうございます!
otn

2023/10/13 12:15

「書いている途中で変数名の意味を忘れてしまう」はさすがに無いと思うので、 おそらくは、 > そもそも「変数とは何か」が理解できてないのかも の方でしょうね。理解できてないまま進むと、長いプログラムは書けないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問