Ruby/Watir 禁用保存密码提示

Ruby/Watir disable Save password prompt

此问题与 chrome 中使用 Rubymine、Watir 和 Selenium 的自动化测试有关。 我们如何禁止它在 Chrome

中弹出

这些是我们当前的chrome驱动程序选项

options = Selenium::WebDriver::Chrome::Options.new(
      options: {"excludeSwitches" => ["enable-automation", "load-extension"]},
      args: ["ignore-certificate-errors", "disable-infobars"]
  )
  options.add_preference(:credentials_enable_service, false)
  options.add_preference(:password_manager_enabled, false)
  driver = Selenium::WebDriver.for :chrome, options: options

好吧,我告诉你一个办法。所以现在我们的目标是按下 Never 按钮,浏览器必须记住该选择,因此它不会再次询问您。所以我们在这里要做的是,我们必须单击 Never 并保存在程序加载的配置文件中。照我说的做。允许此弹出窗口显示并知道它在程序中的哪一行,在那一行之后,只需暂时写入 sleep 20 秒后您就可以删除此语句。一旦程序到达这里,它会等你 20 秒,所以手动按下永不按钮现在这个选择将存储在配置文件程序加载中,所以下次程序加载时它不会询问你。当你下次 运行 时,删除这个 sleep 20.

使用首选项

您设置的首选项正确。问题是您 运行 遇到了 Selenium-WebDriver 中的错误 - https://github.com/SeleniumHQ/selenium/issues/7917.

在修复发布之前,您需要使用字符串作为首选项而不是符号:

options.add_preference("credentials_enable_service", false)
options.add_preference("password_manager_enabled", false)

请注意,您不需要直接创建 Selenium 选项。您可以让 Watir 为您做这件事:

browser = Watir::Browser.new(
  :chrome,
  options: {
    options: {"excludeSwitches" => ["enable-automation", "load-extension"]},
    args: ["ignore-certificate-errors", "disable-infobars", '--disable-features=RendererCodeIntegrity'],
    prefs: {"credentials_enable_service" => false, "password_manager_enabled" => false}
  }
)

使用隐身模式

或者,您可以使用隐身模式而不是设置首选项:

options = Selenium::WebDriver::Chrome::Options.new(
  options: {"excludeSwitches" => ["enable-automation", "load-extension"]},
  args: ["incognito", "ignore-certificate-errors", "disable-infobars"]
)