【问题标题】:Ruby/Watir disable Save password promptRuby/Watir 禁用保存密码提示
【发布时间】:2020-11-21 03:57:01
【问题描述】:

这个问题与使用 Rubymine、Watir 和 Selenium 在 chrome 中进行自动化测试有关。 我们如何禁止它在 Chrome 中弹出

这些是我们当前的 chromedriver 选项

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

【问题讨论】:

  • 如果您使用相同的用户名和密码,我会告诉您另一个想法。你是吗?
  • 它来自 10 个可能的名称/密码池

标签: ruby selenium webdriver watir


【解决方案1】:

使用首选项

您正在正确设置首选项。问题是您遇到了 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"]
)

【讨论】:

  • 这其实就是答案!
  • 嗨,我的浏览器声明中已经有了 options 键,例如 b=Watir::Browser.new :chrome, options: {prefs: prefs}。如果是这样,我怎样才能在我的设置中包含您的选项?
  • @Rajagopalan,首选项将添加到您的 prefs 哈希中。请参阅更新的答案,它显示了如何在不手动创建 Selenium Options 对象的情况下完成整个配置。
  • 嗨,贾斯汀,您给出的答案非常有效,谢谢。每个测试用例结束时,我将关闭浏览器,当我再次打开浏览器时,它会在右上角弹出消息Restore pages? Chrome didn't shut down correctly。我不知道为什么会出现这个问题,但是有什么办法可以避免这个弹出窗口?
  • 对不起@Rajagopalan,不能说我自己也遇到过。据我所知,这是使用现有配置文件的 Chromedriver 问题。最好的选择可能是停止使用现有的配置文件 - 即看看您是否可以自动化所有配置。听起来Issue 3370 可能与您的问题有关,并计划在 Chromedriver 86 中发布。
【解决方案2】:

好的,我会告诉你一个方法。所以现在我们的目标是按下Never 按钮,浏览器必须记住这个选择,这样它就不会再问你了。所以我们在这里要做的是,我们必须点击Never 并保存在程序加载的配置文件中。照我说的做。让这个弹出窗口出现并知道它在程序中的哪一行,在那一行之后,只需暂时写 sleep 20 秒后你就可以删除这个语句。一旦程序到达这里,它会等待你 20 秒,所以现在手动按下从不按钮,这个选择将存储在配置文件程序加载中,所以下次加载程序时它不会问你。并且下次运行时,去掉这个 sleep 20。

【讨论】:

  • 每次创建新的 Chrome 实例时不会返回提示吗?我认为这只有在您重复使用相同的配置文件时才有效。
  • 你是完全正确的。他必须加载相同的配置文件。
猜你喜欢
  • 2015-03-30
  • 1970-01-01
  • 2015-12-22
  • 2011-11-04
  • 1970-01-01
  • 2023-01-27
  • 2016-03-27
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多