()

Qiita Articles

公開記事のミラー・バックアップ

プログラミング・可視化

SeleniumでSlackに自動でログインする

Qiita公開: · 元記事更新:
バックアップ取得:

筆者自身のQiita記事を転載しています。内容は取得時点の記録です。Qiitaの元記事 · 原文Markdownを保存

この記事の目次

ブラウザの操作を自動化するライブラリ「Selenium」を使ってSlackのログインを自動化するプログラムの一例です。

auto-login.py
# (Selenium 4.1.0 で動作確認済み)
# webdriver は使用しているChromeのバージョンに合わせて以下のページから取得する。
# https://chromedriver.chromium.org/downloads

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome import service as fs
import time

# parameters
slackurl    = 'sample.slack.com'        # Slack URL
mailaddress = 'sample@gmail.com'        # 登録済みメールアドレス
mypassword  = 'abrakadabra'             # ログインパスワード
waittime    = 10.0                      # (sec.) 通信速度 & PCスペックに応じて調整
logintime   = 100.0                     # (sec.) 適宜調整
driverpath  = 'C:/Users/[user名]/Downloads/chromedriver_win32/chromedriver.exe' # webdriver が置かれている path を指定
url         = 'https://app.slack.com/client/XXXYYYZZZ/AAABBBCCC'                # 目的地となる Slack WorkSpace のURL


try:
    # Webページにアクセス
    chrome_service = fs.Service(executable_path=driverpath)
    driver = webdriver.Chrome(service=chrome_service)
    driver.maximize_window()  #全画面表示にする (オプション)
    driver.get(url)
    driver.implicitly_wait(waittime)  # 遷移待ち

    # Slack WorkSpace の選択
    ch_element = driver.find_element(By.ID, 'domain')
    ch_element.send_keys(slackurl)
    ch_element.send_keys(Keys.ENTER)
    driver.implicitly_wait(waittime)  # 遷移待ち

    # 自動ログイン
    mail_element = driver.find_element(By.ID, 'email')
    mail_element.send_keys(mailaddress)
    password_element = driver.find_element(By.ID, 'password')
    password_element.send_keys(mypassword)
    password_element.send_keys(Keys.ENTER)
    driver.implicitly_wait(waittime)  # 遷移待ち

    # 自動ログインに成功
    print('Successfully logged in:')
    url     = driver.current_url    # URLを取得する (オプション)
    title   = driver.title          # タイトルを取得する (オプション)
    print(url, title)

    # 任意時間ログイン状態を維持
    time.sleep(logintime)

finally:
    # セッションの終了
    driver.quit()
    print("Done.")

セキュリティの問題が生じない範囲で適宜改変してご利用下さい。