WordPressでブログを作っていると、記事を書く度に、
- ブラウザ起動
- ユーザー名入力
- パスワード入力
- ログインボタンをクリック
- 新規投稿画面(投稿一覧画面)を表示
という5つの手順を毎回操作しますよね。
これって面倒じゃないですか?
私はめちゃくちゃ面倒です!!!
というわけで、Seleniumを使って
- ブラウザ起動 ~ 新規投稿画面
- ブラウザ起動 ~ 投稿一覧画面
までを自動化してみました。
自動化したおかげで、ダブルクリック1回で投稿画面まで表示されるようになったんで、めちゃくちゃストレスフリーです(^O^)
▼自動化後の操作はこちらの動画をご覧ください▼
PC環境は
- Windows11
- Python 3.12.6
- Selenium 4.25.0
- Google Chrome
です。
WindowsにSeleniumをインストールする方法はこちらです。
投稿者「みか」自己紹介
- パソコンとデータベースが大好き
- 自社でネットワーク・システム・機器管理、Webサイト構築
- 自社向けのシステムをMicrosoft AccessやPHPで多数構築
- Excelでの作業はVBAを使って効率化
- ロックバンド「VARS」でベース担当
- 「VARS」のWebサイト、ブログも構築
- 「VARS」のライブを観に来てね!https://vasofatum.jp/live/
SeleniumでWordPress自動ログインコード
①ブラウザ起動 ~ 新規投稿画面
ファイル名: blog_new.py
23、45行目: ブログドメイン = 自分のブログドメイン
30行目: xxxxxxxxxx = ログイン用のユーザー名
34行目: zzzzzzzzzz = ログイン用パスワード
ユーザー名とパスワードの入力が早すぎて失敗することがあるので、32行目と36行目で1秒待っています。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
chrome_options = Options()
# ブラウザを開いたままオプション
chrome_options.add_experimental_option("detach", True)
# 自動テストの文字非表示オプション
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome(options=chrome_options)
#ウインドウを最大化する
driver.maximize_window()
#待機時間設定
wait = WebDriverWait(driver=driver, timeout=20)
# ブログ開く
url = "https://ブログドメイン/wp-login.php"
driver.get(url)
# ページが完全に読み込まれるまで待機
wait.until(EC.presence_of_all_elements_located)
# ID、password入力
txt_id = driver.find_element(By.ID, "user_login")
txt_id.send_keys("xxxxxxxxxx")
# 念のため1秒待つ
time.sleep(1)
txt_pass = driver.find_element(By.ID, "user_pass")
txt_pass.send_keys("zzzzzzzzzz")
# 念のため1秒待つ
time.sleep(1)
# ログインクリック
login_btn = driver.find_element(By.ID, "wp-submit")
login_btn.click()
# ページが完全に読み込まれるまで待機
wait.until(EC.presence_of_all_elements_located)
# 新規投稿に画面遷移
driver.get("https://ブログドメイン/wp-admin/post-new.php")
# ページが完全に読み込まれるまで待機
wait.until(EC.presence_of_all_elements_located)
②ブラウザ起動 ~ 投稿一覧画面
ファイル名: blog_list.py
23行目: ブログドメイン = 自分のブログドメイン
30行目: xxxxxxxxxx = ログイン用のユーザー名
34行目: zzzzzzzzzz = ログイン用パスワード
ユーザー名とパスワードの入力が早すぎて失敗することがあるので、32行目と36行目で1秒待っています。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
chrome_options = Options()
# ブラウザを開いたままオプション
chrome_options.add_experimental_option("detach", True)
# 自動テストの文字非表示オプション
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome(options=chrome_options)
#ウインドウを最大化する
driver.maximize_window()
#待機時間設定
wait = WebDriverWait(driver=driver, timeout=20)
# ブログ開く
url = "https://ブログドメイン/wp-login.php"
driver.get(url)
# ページが完全に読み込まれるまで待機
wait.until(EC.presence_of_all_elements_located)
# ID、password入力
txt_id = driver.find_element(By.ID, "user_login")
txt_id.send_keys("xxxxxxxxxx")
# 念のため1秒待つ
time.sleep(1)
txt_pass = driver.find_element(By.ID, "user_pass")
txt_pass.send_keys("zzzzzzzzzz")
# 念のため1秒待つ
time.sleep(1)
# ログインクリック
login_btn = driver.find_element(By.ID, "wp-submit")
login_btn.click()
# ページが完全に読み込まれるまで待機
wait.until(EC.presence_of_all_elements_located)
# Postsクリック
posts_btn = driver.find_element(By.ID, "menu-posts")
posts_btn.click()
# ページが完全に読み込まれるまで待機
wait.until(EC.presence_of_all_elements_located)