在最近使用Chrome推出了一些政策更新后,我们在使用Selenium Web Driver运行Protractor E2E测试时遇到了解压扩展问题。
错误是:
Failed to load extension from:C:\Users\...\AppData\Local\Temp\scoped_dir9090_11922\internal.
管理员禁用加载解压缩的扩展程序。
此内部文件夹已从internal.zip解压缩,并包含以下manifest.json
:
{
"key": "MIGfMA0GCSqGSI...",
"name": "Chrome Automation Extension",
"version": "1",
"manifest_version": 2,
"description": "Exposes extension APIs for automating Chrome",
"background": {
"scripts": ["background.js"]
},
"permissions": [
"tabs", "management", "<all_urls>"
]
}
在量角器配置文件中,我们尝试在此处禁用扩展程序,但它没有效果:
multiCapabilities: [
{
browserName: 'chrome',
chromeOptions: {
args: [
'--disable-extensions', '--disable-plugins', '--start-maximized'
]
}
},
]
根据comment 22 on March 31st中的this Chrome bug,他们引入了新的Chrome选项--useAutomationExtension
。因此,一旦我将Protractor再次放在我的盒子上,我将按以下方式尝试:
chromeOptions: {
args: [
'--disable-extensions', '--disable-plugins', '--start-maximized',
'--useAutomationExtension=false'
]
}
是否有人确切地确定了解压缩的扩展名,以及与白皮书目的进行通信的IT部门? Here is an old post which addresses this issue
--useAutomationExtension=false
选项?我将在全天进展时更新这篇文章,希望增加一些清晰度。
答案 0 :(得分:3)
错误可以通过protractor.conf.js中的以下chromeOptions来解决:
<强> 1。禁用AutomationExtension
chromeOptions: {
useAutomationExtension: false
}
<强> 2。以无头模式运行Chrome(无UI)
chromeOptions: {
args: [ "--headless", "--disable-gpu", "--window-size=800,600" ]
}
哪个更快但你看不到任何东西
答案 1 :(得分:0)
在Ubuntu 20.4下,我在2020年的最新版本的node和@angular中也遇到了同样的问题。
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
Angular CLI: 9.0.7
Node: 12.18.2
OS: linux x64
Angular: 9.0.7
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.900.7
@angular-devkit/build-angular 0.1000.0
@angular-devkit/build-optimizer 0.1000.0
@angular-devkit/build-webpack 0.1000.0
@angular-devkit/core 9.0.7
@angular-devkit/schematics 9.0.7
@ngtools/webpack 10.0.0
@schematics/angular 9.0.7
@schematics/update 0.900.7
rxjs 6.5.5
typescript 3.7.5
webpack 4.43.0
上面在protractor.conf.js的chromeOptions部分中放置“ useAutomationExtension:false”的说明对我有用。
但是,'-headless'不能解决此问题,因为错误消息虽然有点神秘,但可以说出真相。因此,设置“无头”选项只会导致测试超时,因为错误会显示在弹出窗口中,并且需要单击“确定”按钮才能继续测试。
除非您有铬的开发人员通道版本,否则自动化扩展程序不在您的浏览器中。因此,默认情况下,chrome驱动程序会尝试使用非dev-channel版本的Chrome上没有的扩展程序。
可用性:仅开发通道。了解更多信息。
https://developer.chrome.com/extensions/automation
我个人认为这很疯狂。在尝试使用该扩展程序之前,驱动程序应检查该扩展程序是否可用。我看过很多关于这一主题的文章,但似乎没有人真正涉及到这个问题。上面的答案将解决问题,但是其根本原因是chrome驱动程序的假设是扩展始终存在。因此,对“真实世界的浏览器版本”(大多数用户未下载Chrome的开发人员通道版本)进行测试(应该是默认设置)是例外。