Webブラウザを使った操作の自動化は、多くの業務を効率化するための重要な手段だ。
たとえば、定期的に更新されるデータの収集や、特定のサイトからのファイルの自動ダウンロードなどが挙げられる。
本記事では、PythonとSeleniumを組み合わせて、Office365へのアクセスやログイン処理を自動化する方法を解説する。
必要なライブラリのインストールとインポート
まず、必要なライブラリをインストールし、インポートする手順から始める。以下のライブラリを使用する。
os
time
selenium
webdriver_manager
pytesseract
インポートのコードは次の通り。
import os import time from selenium import webdriver from selenium.webdriver.edge.service import Service as EdgeService from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from webdriver_manager.microsoft import EdgeChromiumDriverManager import pytesseract
メールアドレス、ユーザーID、パスワードの設定
自動ログインに必要な情報を変数として設定する。
以下はサンプルであり、実際に使用する際には個々のログイン情報を設定すること。
# メールアドレス email_address = "example@example.com" # ユーザーID user_id = "example_user" # パスワード user_password = "example_password"
WebDriverの初期設定
次に、Edgeブラウザを使用するための設定を行う。
以下のコードでEdgeのWebDriverを初期化し、必要なオプションを設定する。
# Tesseract OCRのパスを設定 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # Edgeブラウザの設定 options = webdriver.EdgeOptions() options.use_chromium = True # WebDriverの初期化 service = EdgeService(EdgeChromiumDriverManager().install()) driver = webdriver.Edge(service=service)
ログイン関数の定義
ログインを自動化するための関数login
を定義する。
この関数では、指定したメールアドレス、ユーザーID、パスワードを用いて自動的にログインを試みる。
def login(): try: # メールアドレスが表示されているdiv要素をクリック email_div_xpath = f"//div[contains(text(), '{email_address}')]" email_div = WebDriverWait(driver, 30).until( EC.element_to_be_clickable((By.XPATH, email_div_xpath)) ) time.sleep(15) email_div.click() time.sleep(5) # ユーザーID入力 username_field = driver.find_element(By.ID, "username") username_field.click() username_field.send_keys(user_id) # パスワード入力 password_field = driver.find_element(By.ID, "password") password_field.click() password_field.send_keys(user_password) # ログインボタン押下 submit_button = driver.find_element(By.ID, "submit") submit_button.click() time.sleep(5) # サインインの状態を保持するか確認 stay_signed_in_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "idSIButton9")) ) stay_signed_in_button.click() time.sleep(5) except Exception as e: print(f"An error occurred during login: {e}") driver.quit()
自動操作の実行
指定したURLにアクセスし、必要に応じてログインし、特定のボタンをクリックする自動化処理を実行する。
try: # Microsoft Officeのページに遷移 office_url = "https://www.office.com/" driver.get(office_url) driver.maximize_window() # 10秒待機 time.sleep(10) # ログインが必要か確認し、必要であればログイン if "login" in driver.current_url: login() # ページが完全に読み込まれるまで待機 WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.XPATH, "//title[contains(text(), 'Office')]")) ) time.sleep(3) # "aria-label"に「ダウンロード」を含む要素を特定してクリック download_button_xpath = "//button[contains(@class, 'css-') and contains(@aria-label, 'ダウンロード')]" download_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, download_button_xpath)) ) download_button.click() # DL待機 time.sleep(15) finally: # ブラウザを閉じる driver.quit()
この手順を通じて、PythonとSeleniumを使ったOffice365への自動アクセスとログインが簡単に実現できる。
このコードをもとに他サイトのログイン処理を実装することも可能だろう。初心者の方はぜひ試してみてほしい。