【问题标题】:ChromeDriver - Disable developer mode extensions pop up on Selenium WebDriver automationChromeDriver - 在 Selenium WebDriver 自动化上弹出禁用开发者模式扩展
【发布时间】:2014-05-30 01:03:20
【问题描述】:

我遇到以下问题: 当我运行自动化测试时,我在 Chrome 中不断收到以下警报“禁用开发人员模式扩展”。

有没有办法删除/禁用它?这对我来说是一个障碍,因为它让我无法通过一些测试。

提前致谢

【问题讨论】:

  • 不应打开该弹出窗口除非您打开开发者工具,否则您不应该这样做。
  • 我在 chrome 上没有扩展,这很奇怪。我也有最新版本的 chrome。
  • 我没有这么说 - 我问你是在 Chrome 中打开开发者工具吗?
  • 不,我只是浏览了几页做一些自动化测试,然后出现了弹出窗口。
  • 如果您单击了解更多链接,它将显示导致对话框出现的是 Chrome 自动化扩展。自 Chrome 34 发布以来,我一直在尝试解决这个问题,但没有任何成功。

标签: java selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

您是否尝试使用命令行参数禁用开发者扩展?

尝试使用以下 Selenium WebDriver java 代码:

System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
driver = new ChromeDriver(options);

【讨论】:

  • 好的,这段代码确实有效,但请务必安装最新的 ChromeDriver!
  • 在最新的 ChromeDriver (2.29) 中似乎没有帮助,并且 --disable-extensions 未列在 Chrome/ChromeDriver 文档中。
  • 昨天有效,今天更新,windows更新后就不行了。
  • 确保chrome驱动版本与Chrome浏览器版本兼容。否则可能无法正常工作。
【解决方案2】:

我无法禁用扩展,因为我正在开发和测试一个。

我要关闭此弹出窗口的操作如下:

  1. 我使用 Selenium 通过我的扩展程序加载 chrome。
  2. 然后我立即创建一个新窗口(通过SendKeys(Control-N) 方法)。不出所料,这会在 3 秒后在新窗口中弹出“禁用开发者模式扩展”
  3. 我无法以编程方式判断它何时弹出(未在屏幕截图中显示),因此我只需等待 4 秒即可。
  4. 然后我通过driver.Close(); 关闭选项卡(这也关闭了这个新窗口)。 Chrome 将其视为“取消”,关闭弹出窗口,离开原来的窗口和标签。

我认为这是必要的,因为弹出窗口会干扰正常的 selenium 浏览器交互,例如我用来切换选项卡和窗口的 SendKeys。

【讨论】:

    【解决方案3】:

    从 Chromedriver v2.33 开始,避免此消息的正确方法是将 load-extension 传递给 chromeOptions 对象的 excludeSwitches 参数。下面的 Java 代码应该可以解决问题,虽然我没有测试过,因为我正在运行 Python:

    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("excludeSwitches", Collections.singletonList("load-extension"));
    

    正如其他人所指出的,罪魁祸首可能是 Chrome 自动化扩展程序,它是由 Chromedriver 在启动 Chrome 时自动加载的。

    Chromedriver v2.33 introduced 新开关,防止加载扩展:

    对 excludeSwitches 功能的更新,现在允许排除 --load-extension 开关。

    我怀疑此解决方案不需要您禁用所有扩展。您应该仍然可以手动加载其他人。

    【讨论】:

      【解决方案4】:

      此问题已通过 ChromeDriver.exe V2.23 + Chrome 53.0 的组合自动修复。

      要了解哪个 chrome 版本适用于哪个驱动程序,我们可以使用以下详细的文档:https://sites.google.com/a/chromium.org/chromedriver/downloads

      享受自动化测试!

      【讨论】:

      • 我也可以通过使用 ChromeDriver v2.23 在 Chrome v52.0.2743.116 上丢失弹出窗口。
      【解决方案5】:

      我使用 AutoIT 解决了这个问题。

      首先,您需要创建脚本。

      closechromewarning.au3:

      WinWaitActive("[CLASS:Chrome_WidgetWin_1]")
      Send("{ESC}")
      

      脚本需要编译成.exe,然后将.exe放到路径中,这样就可以运行了。

      关闭警告的函数,使用 c# 语法:

      public void CloseChromeDialog()
      {
          System.Threading.Thread.Sleep(5000);
          Process.Start(@".\closechromewarning.exe");
      }
      

      Sleep(4000) 确实有效,但我将其升级为 Sleep(5000) 只是为了确定。

      致电CloseChromeDialog():

      if(browser == chrome) //pseudo code
          CloseChromeDialog();
      

      【讨论】:

      • 谢谢 效果很好,不是它想要的解决方案,而是唯一有效的解决方案,直到谷歌修复 Chrome 问题
      • @elcharrua 同意。我已经尝试了很多不同的方法来解决这个问题,这是迄今为止唯一有效的方法。
      【解决方案6】:

      在 chrome 54 和 chromedriver 2.25 中已解决

      【讨论】:

        【解决方案7】:

        我也遇到过这个问题。解决方案是,如果您使用的是 maven,则只需添加:

        -Dchrome.switches=--disable-extensions

        它将禁用所有扩展,您将不会遇到此问题。

        【讨论】:

          【解决方案8】:

          我正在使用 selenium Webdriver 2.53 和 chrome 版本 56.0.2924.87,我使用的 chrome driver.exe 是 2.27。通过这种组合,它与

          System.setProperty("webdriver.chrome.driver", "./utilities/chromedriver.exe");          
          ChromeOptions options = new ChromeOptions();        
          options.addArguments("--disable-extensions");           
          DesiredCapabilities caps = new DesiredCapabilities().chrome();
          caps.setCapability(ChromeOptions.CAPABILITY, options);
          driver = new ChromeDriver(caps);
          

          【讨论】:

          • Chrome 57.0.2987.133 和 chromedriver.exe 2.29 不适用于我。我的初始化:ChromeOptions options = new ChromeOptions(); options.addArguments("--disable-extensions"); options.setExperimentalOption("prefs", prefs); options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation")); DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setCapability(ChromeOptions.CAPABILITY, options);
          【解决方案9】:

          尝试在 ChromeDriver 实例上方添加 setProperty

          System.setProperty("webdriver.chrome.driver","C:/[PATH]/chromedriver.exe");
          driver = new ChromeDriver(capabilities);
          

          【讨论】:

            【解决方案10】:

            这是因为您的一个扩展程序正在开发人员模式下运行。浏览您的扩展程序列表并逐个禁用扩展程序,直到找到罪魁祸首。

            【讨论】:

            • 问题是我的 chromedriver 和 chrome 浏览器上都没有任何扩展。这是我初始化 chromedriver 的方法: ChromeOptions options = new ChromeOptions(); options.addArguments("--lang=es"); driver = new ChromeDriver(options);
            • 你没有在 Chrome 中安装任何扩展?
            • 没有。我用火狐浏览网页,Chrome 只是用于自动化测试。该弹出窗口不是阻止您的浏览器的警报。并搜索解决方案,但找不到任何奇怪的东西。我正在运行 chromedriver 2.9
            • 这很奇怪。您运行的是最新版本的 Chrome 吗?
            • 是的,最新版本是 2.9。 chromedriver.storage.googleapis.com/index.html
            猜你喜欢
            • 2018-06-22
            • 1970-01-01
            • 2014-05-28
            • 1970-01-01
            • 2018-05-25
            • 1970-01-01
            • 2015-07-29
            • 2020-05-09
            • 1970-01-01
            相关资源
            最近更新 更多