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

时间:2014-04-15 15:08:43

标签: java selenium selenium-webdriver selenium-chromedriver

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

enter image description here

有没有办法删除/禁用此功能?对我来说这是一个阻碍因为它让我失败了一些测试。

提前致谢

10 个答案:

答案 0 :(得分:55)

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

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

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

答案 1 :(得分:8)

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

我正在做的解雇此弹出窗口的内容如下:

  1. 我使用Selenium为我的扩展加载了chrome。
  2. 然后我立即创建一个新窗口(通过SendKeys(Control-N)方法)。这可以预测在新窗口中3秒之后弹出“禁用开发者模式扩展”弹出窗口。
  3. 我无法以编程方式告诉它何时弹出(未在屏幕截图中显示)所以我只是等待4秒钟。
  4. 然后我通过driver.Close();关闭标签(这也关闭了这个新窗口)。 Chrome将其视为“取消”,取消弹出窗口,保留原始窗口和标签。
  5. 我发现这是必要的,因为弹出窗口干扰了正常的selenium浏览器交互,比如SendKeys,我用它来切换标签和窗口。

答案 2 :(得分:3)

这已使用 ChromeDriver.exe V2.23 + Chrome 53.0 的组合自动修复。

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

享受自动化测试!!

答案 3 :(得分:2)

我使用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();

答案 4 :(得分:2)

在chrome 54和chromedriver 2.25中解决

答案 5 :(得分:0)

我也遇到了这个问题。解决方法是,如果你使用maven,那么只需添加:

-Dchrome.switches=--disable-extensions

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

答案 6 :(得分:0)

我使用的是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);

答案 7 :(得分:0)

尝试在ChromeDriver实例上添加setProperty

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

答案 8 :(得分:0)

从Chromedriver v2.33开始,避免出现此消息的正确方法是将load-extension传递给chromeOptions对象的excludeSwitches自变量。尽管我在运行Python时尚未进行测试,但以下Java代码应该可以解决问题:

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

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

Chromedriver v2.33 introduced的新开关可防止加载扩展程序:

  

更新为排除开关功能,现在可以排除--load-extension开关。

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

答案 9 :(得分:-1)

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