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

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

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

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

selenium

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

Q&A

解決済

2回答

1652閲覧

selenium を利用した自動ログイン要素の取得

huchamon

総合スコア4

Python 3.x

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

selenium

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

0グッド

0クリップ

投稿2021/07/23 06:46

python を使ってマネーフォワード(家計簿サイト)への自動ログインを行いたいと考えています。
seleniumを使って下記の様なコードを書いてみたのですが、"同意してログインする"ボタンの要素が見つからないというエラーが発生してログイン出来ません。
クリックするべき要素が間違っているのでしょうか?ご教授頂ければ幸いです。

python3.8

1from selenium import webdriver 2from time import sleep 3sleep(3) 4 5from webdriver_manager.chrome import ChromeDriverManager 6browser = webdriver.Chrome(ChromeDriverManager().install()) 7 8browser.quit() 9 10browser = webdriver.Chrome() 11 12url = 'https://id.moneyforward.com/sign_in/email?client_id=2WND7CAYV1NsJDBzk13JRtjuk5g9Jtz-4gkAoVzuS_k&nonce=68920c7bc5ccb91f0adefdf20833937e&redirect_uri=https%3A%2F%2Fmoneyforward.com%2Fauth%2Fmfid%2Fcallback&response_type=code&scope=openid+email+profile+address&state=f2c842cbe6c2de6b10fb483510163435' 13browser.get(url) 14 15elem_mailaddres = browser.find_element_by_name('mfid_user[email]') 16# print(elem_username) 17 18 19elem_mailaddres.send_keys('メールアドレス') 20 21 22elem_login_btn=browser.find_element_by_class_name('zNNfb322 submitBtn homeDomain') 23elem_login_btn.click()

エラーコードは下記の通りです。

File "ファイル名", line 22, in <module> elem_login_btn=browser.find_element_by_class_name('zNNfb322 submitBtn homeDomain') File "selenium/webdriver/remote/webdriver.py", line 564, in find_element_by_class_name return self.find_element(by=By.CLASS_NAME, value=name) File "selenium/webdriver/remote/webdriver.py", line 976, in find_element return self.execute(Command.FIND_ELEMENT, { File "selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".zNNfb322 submitBtn homeDomain"} (Session info: chrome=91.0.4472.164)

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

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

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

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

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

guest

回答2

0

ベストアンサー

試していませんが、

この find_element_by_class_name
は複数のクラス名が入っていると使えないようです

browser.find_element_by_css_selector('.zNNfb322.submitBtn.homeDomain')

で取れませんでしょうか?

投稿2021/08/01 22:54

itokoishi

総合スコア63

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

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

huchamon

2021/08/16 07:43

何回かやったつもりで出来なくて諦めていましたが、今更になって改めて見直して試してみたら出来ました。 参照するclass名等の先頭や空白部分に"."を入れないと駄目だったんですね!今まで見逃しており回答が遅れました!ありがとうございました!
guest

0

投稿2021/07/23 07:29

otn

総合スコア85901

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

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

huchamon

2021/07/24 12:35

そうなんですね。 プログラムから開いても、メールアドレスは記入出来るのですが、ボタンは押せない場合があるのですね。 もう一度最初からやり直してみたいと思います。
huchamon

2021/07/31 07:10

トップページのhttps://moneyforward.com/から同じようにログインボタンの要素取得を行っても同様のエラーが出て、次のページに移るこtができませんでした。 コード(一部抜粋) url = 'https://id.moneyforward.com/' browser.get(url) sleep(3) elem_login_btn=browser.find_element_by_class_name('_3YfqHHG3 primaryGhostBtn _1CFa_dyT action') elem_login_btn.click() エラーコード(一部抜粋) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"._3YfqHHG3 primaryGhostBtn _1CFa_dyT action"} (Session info: chrome=92.0.4515.107) 要素の取得方法がおかしいのでしょうか?ご助言頂ければ幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問