ChromeDriver - 在 Selenium WebDriver 自动化上弹出禁用开发者模式扩展

Posted

技术标签:

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

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

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

提前致谢

【问题讨论】:

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

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

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

    我使用 Selenium 通过我的扩展程序加载 chrome。 然后我立即创建一个新窗口(通过SendKeys(Control-N) 方法)。不出所料,这会在 3 秒后在新窗口中弹出“禁用开发者模式扩展” 我无法以编程方式判断它何时弹出(未在屏幕截图中显示),因此我只需等待 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

以上是关于ChromeDriver - 在 Selenium WebDriver 自动化上弹出禁用开发者模式扩展的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 上使用 selenium 和 chromedriver

selenium 怎么驱动chromedriver

selenium使用ChromeDriver

selenium与chromedriver的操作

C# + Selenium + ChromeDriver 爬取网页

Selenium 错误:“chromedriver”可执行文件需要在 PATH [重复]