【Python】Selenium:Chromeの「パスワードを保存しますか」を表示させない方法

時計 2021.03.24 / 時計

【Python】Selenium:Chromeの「パスワードを保存しますか」を表示させない方法

本記事では、PythonSeleniumによるChromeブラウザの自動操作で、ログイン後に表示される「パスワードを保存しますか」のポップアップを表示させない方法について解説していきます。

SeleniumでChromeブラウザを自動操作していると以下のエラーが発生することがあります。

ElementClickInterceptedException: element click intercepted

このエラーが発生する原因については以下記事をご参照ください。

このエラー原因の一つに、Chromeのパスワード保存のポップアップがあります。
パスワード保存のポップアップを非表示にして、エラーが発生しないようにする方法を見ていきましょう。

本記事を通して以下の知識を学べます。

学べる知識
  • ElementClickInterceptedExceptionエラーについて
  • Chromeのパスワード保存ポップアップについて
  • パスワード保存機能をSeleniumでOFFにする方法

SeleniumによるChromeの自動操作

エラーが発生

PythonのSeleniumでChromeを自動操作するアプリを走らせていると、以下のエラーが発生し、アプリが途中でストップしてしまいました。

ElementClickInterceptedException: element click intercepted

このエラーの発生タイミングとしては、WebElementオブジェクトに対してclick()メソッドを使ってクリック操作をするときでした。

element.click()

エラー原因

このエラーが発生する原因としては、以下2つの原因が考えられます。

  • 対象要素が画面外にある場合
  • 対象要素が別の要素で隠れてしまっている場合

今回ElementClickInterceptedExceptionエラーが発生したのは、2番目の原因です。
Chromeブラウザによるポップアップ表示「パスワードを保存しますか」によって、クリックしたい要素が隠れてしまっているのです。

Chromeブラウザについて

パスワード保存機能

いろいろなサイトのログイン情報(ID、パスワード)を管理することは非常に大変ですし、毎回ログインのたびに入力するのもめんどくさいですよね。

Chromeでは様々なサイトのログイン情報(ID、パスワード)を保存しておく機能があります。

ログインが必要なサイトでログインを行うと、次のようなポップアップが表示します。

Chrome:ポップアップ表示「パスワードを保存しますか」

パスワード保存機能をOFFにする方法

このChromeに備わっているパスワード保存機能をOFFにする方法を以下に記します。

  1. Chromeの右上「…」をクリックし、「設定」を選択する
  2. 設定画面から「自動入力」内の「パスワード」を選択する
  3. 「パスワードを保存できるようにする」をOFFにする

上記の方法でChromeのパスワード保存をOFFにすることができます。

Selenium:Chromeからポップアップを非表示にする方法

Chrome側でOFFにしても表示する

上記で説明している方法でパスワード保存機能をOFFにすれば、SeleniumでChromeを操作したときにポップアップは表示しなくなると思いますよね。

実はChrome側でパスワード保存をOFFにしていても、SeleniumでChromeを起動するとONになって起動してしまうのです。

これは私の予想ですが、Seleniumだとデフォルト設定の状態でChromeは起動されるのではないかと思っています。

webdriverのオプションで非表示に設定する

それではどうやってパスワード保存のポップアップを非常時にできるのか。

それはSeleniumで使用するwebdriverのオプションで、パスワード保存機能をOFFにすることで実現することができます。

以下のようにwebdriverにadd_experimental_option()メソッドで追加することで、パスワード保存機能をOFFにできます。

from selenium import webdriver

options = webdriver.ChromeOptions()

prefs = {"credentials_enable_service", False}
prefs = {"profile.password_manager_enabled" : False}
options.add_experimental_option("prefs", prefs)

chromedriver = 'chromedriver.exe'
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=options)

まとめ

本記事「【Python】Selenium:Chromeの「パスワードを保存しますか」を表示させない方法」はいかがでしたか。

Chromeのポップアップ「パスワードを保存しますか」がSeleniumのクリック操作で邪魔になることは滅多にありませんが、消しておくに越したことはないです。

ぜひSeleniumでChrome操作する際は、このオプションを追加しておくことをお勧めします。