前回はSeleniumでブラウザをスクロールさせました。今回は、ログイン画面にIDとパスワードを自動で入力して、ログインするところまでやってみます。
結論から言うと、開発者ツール(F12)で入力欄とボタンのidを探し、find_element(By.ID, 'id名') で選んで、send_keys() で入力、click() で押す だけです。
要点
- 操作したい入力欄やボタンは、ブラウザの開発者ツール(F12)で探します
- 文字の入力は
send_keys()、ボタンを押すのはclick()です - ページが読み込まれる前に次へ進むとエラーになるので、待ち時間を入れます
- Selenium 4.3以降は
find_element_by_idが使えません。find_element(By.ID, ...)を使います
自動ログインのコード(今の書き方)
当時はYahoo! JAPANのログイン画面で試しました。下のコードは、当時のコードを今のSeleniumの書き方に直したものです。ブログ用に書き直したもので、まだ動作を確かめていません。また、Yahoo! JAPANのログイン画面はその後作りが変わっているので、idはそのページで探し直してください(探し方は後で書きます)。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
username = 'id' # ID、メールアドレス、携帯番号など
password = 'password' # パスワード
browser = webdriver.Chrome()
browser.get('ログインページのURL')
wait = WebDriverWait(browser, 10)
user_name = wait.until(EC.element_to_be_clickable((By.ID, 'username')))
user_name.send_keys(username)
browser.find_element(By.ID, 'btnNext').click()
psw = wait.until(EC.element_to_be_clickable((By.ID, 'passwd')))
psw.send_keys(password)
browser.find_element(By.ID, 'btnSubmit').click()
コードの中身
1. 必要なライブラリを読み込む
webdriver はブラウザを動かすため、By は操作する場所を指定するため、WebDriverWait と EC は、操作できるようになるまで待つために使います。
2. IDとパスワードを変数に入れる
username にログインID(メールアドレスや携帯番号)を、password にパスワードを入れます。
パスワードをコードに直接書くと、ファイルを人に渡したときに漏れてしまいます。自分のパソコンで試すだけにして、人に見せるときは必ず消してください。
3. ブラウザを開く
webdriver.Chrome() でChromeを開き、get() でログインページを開きます。

当時はChromeのバージョンに合った「ChromeDriver」を自分でダウンロードする必要がありましたが、Selenium 4.6以降は自動で用意してくれるようになりました。
4. ページが表示されるまで待つ
プログラムは、ブラウザが完全に読み込まれていなくても次の操作に進んでしまうので、エラーになることがあります。人が操作するなら、入力できるようになるまで待ったり、ボタンが出てから押したりしますよね。それをプログラムでもやります。
当時は time.sleep(10) で10秒待っていました。今のコードの wait.until(...) は、入力欄が操作できるようになるまで最大10秒待ち、操作できるようになったらすぐ次へ進みます。決まった秒数を待つより無駄がありません。
5. 入力欄とボタンを探して操作する
find_element(By.ID, 'username') の 'username' の部分に、操作したい場所のidを入れます。send_keys() で文字を入力し、click() でボタンを押します。
ID入力→「次へ」ボタン→パスワード入力→「ログイン」ボタン、と同じことを2回くり返せばログインできます。
操作したい場所(id)の探し方
- 操作したいページをブラウザで開き、WindowsならF12キーを押して開発者ツールを開きます
- HTMLの行にカーソルを合わせると、画面のその部分が青くなります。操作したい場所が青くなる行を、階層を下りながら探していきます
- 操作したい場所だけが青くなる行が見つかったら、その中の
id="..."の部分がidです


当時のYahoo! JAPANでは、IDの入力欄が username、「次へ」ボタンが btnNext でした。

当時のコード(参考)
2019年に書いて動いていたコードです。Selenium 4.3以降では find_element_by_id が削除されたため、このままでは AttributeError になります。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
username=('id')#ID or メール or 携帯番号
password=('password')#パスワード
browser = webdriver.Chrome()
browser.get('https://login.yahoo.co.jp/config/login?.src=www&.done=https://www.yahoo.co.jp')
time.sleep(10)
user_name=browser.find_element_by_id('username')
user_name.send_keys(username)
btn=browser.find_element_by_id('btnNext')
btn.click()
time.sleep(5)
psw=browser.find_element_by_id('passwd')
psw.send_keys(password)
logbt=browser.find_element_by_id('btnSubmit')
logbt.click()
注意点
- 自動ログインは、自分のアカウントで使うだけにしてください
- サイトによっては、利用規約で自動操作を禁止していたり、ロボットかどうかを確かめる画面(画像認証など)が出たりします。使う前に規約を確認してください
まとめ
- 入力欄やボタンのidは、開発者ツール(F12)で探します
find_element(By.ID, 'id名')で選び、send_keys()で入力、click()で押します- 待ち時間は、
time.sleep()よりWebDriverWaitのほうが無駄がありません - Selenium 4.3以降は
find_element_by_idが使えないので、古い記事のコードは書き直しが必要です
ブラウザのスクロールはPython備忘録 selenium ブラウザスクロール編、Seleniumで商品データを集めた記録はAmazonのスクレイピングの記事にまとめています。

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
[…] seleniu 自動ログイン編はここから👈 […]