🐈⬛
ChromeのパスワードチェックがSeleniumの邪魔をする
概要
関連ありそうなところ変更してないのに、Seleniumのテストがコケて、確認してみたらChange your password
というダイアログが出て、先に進めなくなっていた。
解決
ドライバー生成のところでPreferenceオプションに'profile.password_manager_leak_detection': false
を渡すとパスワードチェックをスルーできる様です。RailsのプロジェクトでCapybaraを使っていたのでコードは下記の様になります。
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome,
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(
chrome_options: {
args: %w(window-size=1680,1050),
w3c: false,
prefs: {
'profile.password_manager_leak_detection': false,
}
},
)
)
end
参考
selenium How to disable or close “Change your password” popup after loginあたりで検索するとprofile.password_manager_leak_detection
をfalse
にすればどうにかできそうなことは出てくるのですが、言語が違って、オプションをどの様に生成すればいいのかわかりませんでした。
これはCapybara出てくるけど、生成方法が違うのであまり参考にならず。
Selenium::WebDriver::Remote::Capabilities.chrome
はCapybaraではなくGoogleが提供するChromeDriverのライブラリの様で、そのドキュメントがこちら。
先ほどの他言語の解説ではprofile.password_manager_leak_detection
はPreferenceに渡してるので、ここでオプションのオブジェクトのリファレンスをみてprefs
にHashで渡したら認識しました。
Discussion