📱

Appiumでログイン状態を維持する方法 Android + Chrome

に公開

結論

# Appiumの設定
options = UiAutomator2Options()
options.platform_name = "Android"
options.device_name = "Galaxy S22"
options.browser_name = "Chrome"
options.automation_name = "UiAutomator2"
options.new_command_timeout = f"{10 * 60 * 1000}"  # タイムアウトを10分に設定
options.set_capability("goog:chromeOptions", {
   "androidUseRunningApp": True,  # 起動中のChromeを再利用
})
options.no_reset = True  # セッションをリセットしない
options.recreate_chrome_driver_sessions = False # 新しいChromeDriverセッションを作成しない

appium_server_url = 'http://127.0.0.1:4723'
driver = appium_webdriver.Remote(appium_server_url, options=options)

上のコードの動き

初回実行時は認証を求められますが、一度起動してしまえばブラウザは終了しないため、何度Appiumコードを実行してもログイン状態は維持されます。

前提

  • OS:Android
  • ブラウザ:Chrome

背景

仕事でウェブアプリの操作を自動化させてテストを半自動化したかったのですが、何度もbasic認証を求められて自動化の意味が薄れたのでどうにかして認証情報を保持したかった。

現象

  • appium(selenium)で書いたコードを実行する。
  • すでにChromeが立ち上がっている場合は殺される。(この時点でユーザーデータも消される。たぶん。)
  • ブラウザが立ち上がる。(新しくユーザーデータが作成される。たぶん。)
  • 自動操作が開始する。

Discussion