#はじめに
pythonを使用してWebサイトに自動ログインするプログラムを作ってみました。
seleniumを使用。
geckodriverを使用してFireFoxを制御します。
複数のサイトにログインすることを想定して作成してます。
1サイト目は、ログイン後にボタン押下が必要なサイトを想定。対象の検索してクリック。
2サイト目は新規タブで開いてログイン。
なお、投稿者は、pythonを勉強して日が浅いです。
Qiitaの投稿も初です。技術レベルは低いです。
#環境
OS | 言語 | ブラウザ |
---|---|---|
windows10 | python3.7 | FireFox |
#事前準備
###driverの入手
ドライバーを下記から入手する。
https://github.com/mozilla/geckodriver/releases
###入手したdriver(geckodriver.exe)をpathが通っている場所に配置
PCの環境設定とかする。省略。
###seleniumuのインストール
pip install selenium
#コーディング
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
from selenium.common.exceptions import TimeoutException
browser = webdriver.Firefox()
type(browser)
#Webサイト1 ユーザー名・パスワード入力欄はtextBoxでid有り
browser.get('Webサイト1')
usr_name_el = browser.find_element_by_id('対象のID')
usr_name_el.send_keys('ユーザー名')
usr_pass_el = browser.find_element_by_id('対象のID')
usr_pass_el.send_keys('パスワード')
usr_pass_el.submit()
#ログイン後、あるボタンを押してトップページ遷移させたいサイトのため下記コード。 aタグでクラス名有り
WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.CLASS_NAME, "対象のクラス名")))
link_el = browser.find_element_by_class_name("対象のクラス名")
type(link_el)
link_el.click()
#Webサイト2
#ユーザー名入力欄はtextBoxでid有り、パスワードはidとclassが無いのでxpathで検索
browser.execute_script( 'window.open()' ) #新規タブ開く
browser.switch_to.window(browser.window_handles[-1]) #新規タブに移動
browser.get('Webサイト2')
usr_name_el = browser.find_element_by_id('対象のID')
usr_name_el.send_keys('ユーザー名')
usr_pass_el = browser.find_element_by_xpath('対象のパス。開発者ツールからコピーするのが楽')
usr_pass_el.send_keys('パスワード')
usr_pass_el.submit()
#参考にしたもの
要素の見つけ方
https://selenium-python.readthedocs.io/locating-elements.html
#おわりに
プログラムでブラウザの制御が思ったより簡単に出来たので、
仕事で毎日ログインするようなサイトの自動化をしてみようと思います。