【python】Seleniumで自動ログインする方法

SNSフォローボタン

フォローする

皆さんはサイトにログインするときに毎回IDとパスワードを入力するのはめんどくさいと感じたことないですか?

また入力している時に誰かにIDとパスワードを盗み見られるのも怖いですよね。

今回はそんな悩みにを解決するためにpythonでSeleniumを使って、自動ログインする方法についてご説明します。

pythonの準備やSeleniumの環境構築がお済みでない方は先に下記の記事をお読みください

準備中

準備中

最初にコードの完成品をお見せします。

なにが書いてあるかわからないと思いますが、一行ずつ解説していきます。

from selenium import webdriver
browser=webdriver.Chrome() #ブラウザChomeを開く
browser.get("アクセスしたいサイトのURL") #指定したURLにアクセスする

#要素を指定
from selenium.webdriver.common.by import By #要素指定をサポートするByライブラリをインポート
xpath_username="ユーザーネーム要素のxpath"
elem_username = browser.find_element(by=By.XPATH, value=xpath_username)
xpath_password="パスワード要素のxpath"
elem_password = browser.find_element(by=By.XPATH, value=xpath_password)

#指定した要素に入力(ユーザーネーム,パスワードを入力)
elem_username.send_keys("ユーザーネーム")
elem_password.send_keys("パスワード")

#要素指定、指定した要素をクリック(ログインボタンをクリックする)
xpath_login="ログインボタン要素のxpath"
elem_login_btn=browser.find_element(by=By.XPATH, value=xpath_login)
elem_login_btn.click()

目次

手順

webdriverをインポートする

seleniumからwebdriverをインポートします。

※インポート:別ファイル(モジュール)に記述されたPythonコードを取り込むこと。元の意味は「導入する」、「輸入する」、「持ち込む」といった意味

from selenium import webdriver

ブラウザを起動する

セッションを開始するため、Chromeブラウザを立ち上げます。

※セッション:アクセスの開始から終了までの一連の通信。

browser=webdriver.Chrome()

アクセスしたいページに移動する

()内にアクセスしたいURLを入力します。

browser.get("アクセスしたいサイトのURL")

ログインフォームを指定する

アクセスしたいページのログインフォームの場所(要素)を指定します。

指定する方法は様々ありますが、今回はxpathによる指定方法について紹介します。

その他の指定方法について知りたい方は下記の記事をお読みください。

記事作成中

開発者ツールを開く

アクセスしたいページで「F12」キーを押して、「DevToolsを開く」をクリックする

または右クリック→「開発者ツールで調査する」をクリックする。

ページ上の要素を指定

「ページ上の検査対象となる要素の選択」アイコンをクリックする。

取得したい要素(ユーザネーム入力フォームorパスワード入力フォーム)をマウスカーソルで選択する。

選択するとHTML中の要素が明らかになる。

xpathのコピー

HTML中の要素上で右クリックして→「コピー」→「完全なXPath」をクリックする。

要素を指定する

コピーしたxpathをそれぞれ、xpaht_usernameとxpath_passwordという変数に入れます。

変数名は任意です。自分のわかりやすい変数名を付けていただいて結構です。

次に要素を指定するのをサポートするByをインポートします。

find_element()を使用して要素を指定します。

()内に引数byと引数valueにそれぞれ「」と「」を入れます。

これでユーザーネームを入力するフォームの要素の指定が完了です。

同様にパスワードを入力するフォームの要素を指定します。

from selenium.webdriver.common.by import By
xpath_username="コピーしたユーザーネーム要素のxpath"
elem_username = browser.find_element(by=By.XPATH, value=xpath_username)
xpath_password="コピーしたパスワード要素のxpath"
elem_password = browser.find_element(by=By.XPATH, value=xpath_password)

IDとパスワードを入力する

send_keysを使って、指定した要素にそれぞれ対応するIDとパスワードを入力します。

elem_username.send_keys("ユーザーネーム")
elem_password.send_keys("パスワード")

ログインボタンをクリックする

上記で紹介した方法でログインボタンの要素を指定します。

指定した要素にclick()を使用してクリックアクションを起こします。

xpath_login="ログインボタン要素のxpath"
elem_login_btn=browser.find_element(by=By.XPATH, value=xpath_login)
elem_login_btn.click()

最後に

from selenium import webdriver
browser=webdriver.Chrome() #ブラウザChomeを開く
browser.get("アクセスしたいサイトのURL") #指定したURLにアクセスする

#要素を指定
from selenium.webdriver.common.by import By #要素指定をサポートするByライブラリをインポート
xpath_username="ユーザーネーム要素のxpath"
elem_username = browser.find_element(by=By.XPATH, value=xpath_username)
xpath_password="パスワード要素のxpath"
elem_password = browser.find_element(by=By.XPATH, value=xpath_password)

#指定した要素に入力(ユーザーネーム,パスワードを入力)
elem_username.send_keys("ユーザーネーム")
elem_password.send_keys("パスワード")

#要素指定、指定した要素をクリック(ログインボタンをクリックする)
xpath_login="ログインボタン要素のxpath"
elem_login_btn=browser.find_element(by=By.XPATH, value=xpath_login)
elem_login_btn.click()

以上で自動ログインするためのコードの説明を終わります。最後にブラウザの立ち下げ方についてご紹介します。

seleniumはブラウザを複数制御することができないので使い終わったら下記のコードを追加してその都度立ち下げることをおすすめします。

browser.quit()

もしブラウザを複数立ち上がると新規ブラウザの方を制御し、古いブラウザが制御できなくなります。どのブラウザを操作しているのか混乱を避けるために操作が終わったらブラウザを閉じることをおすすめします。