Selenium を使ってブラウザの試験を自動化する際、ログイン情報などの Cookie を
読み込んだり、保存したりできると試験シナリオの自由度がさらに広がります。
そこで、本記事では Python の pickle モジュールを使って、
Cookie の読込と保存を行う方法をご紹介いたします。
Cookie の読込
1 2 3 4 5 6 7 8 9 10 11 12 |
import os import pickle def load_cookie(driver, file_path): if os.path.isfile(file_path) != True: return with open(file_path, 'rb') as fd: cookies = pickle.load(fd) for c in cookies: driver.add_cookie(c) |
注意ポイント
Cookie は、何かしらの Web ページへ遷移してから読み込む必要があります。
全体のサンプルコードを最後に記載していますので、そちらをご覧ください。
Cookie の保存
1 2 3 4 5 6 7 8 |
import pickle def save_cookie(dirver, file_path): cookies = driver.get_cookies() with open(file_path, 'wb') as fd: pickle.dump(cookies, fd) |
Cookie の保存はいたってシンプルです。
Web Driver からの戻り値をそのまま pickle で保存します。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
from selenium import webdriver import chromedriver_binary import os import pickle import time def load_cookie(driver, file_path): if os.path.isfile(file_path) != True: return with open(file_path, 'rb') as fd: cookies = pickle.load(fd) for c in cookies: driver.add_cookie(c) def save_cookie(dirver, file_path): cookies = driver.get_cookies() with open(file_path, 'wb') as fd: pickle.dump(cookies, fd) def main(): # Chrome 起動 driver = webdriver.Chrome() # 所望の URL へ移動 driver.get('https://progzakki.sanachan.com/') time.sleep(5) # Cookie 読込、ファイルが無ければ何もしない load_cookie(driver, './cookie.pkl') # この待ち時間中に、ログイン作業などを手動で行う time.sleep(30) # Cookie 保存 save_cookie(driver, './cookie.pkl') # Chrome 終了 driver.quit() if __name__ == '__main__': main() |