使用Protractor和网络驱动程序在自动测试中启用剪贴板



我想用Protractor测试一个使用剪贴板api访问系统剪贴板的Angular应用程序。问题是,在执行测试时,Chromium浏览器会向用户请求访问剪贴板的权限。我无法从测试中关闭此框,因为这既不是DOM元素,也不是警报窗口,而且似乎无法从Protractor访问它。

剪贴板权限

我已经尝试在Chrome中自动授予权限,在量角器设置中。首先,我寻找了一个可以执行此操作的命令行开关,但它似乎不存在。

然后我找到了一种显然有效的方法,但我不知道它是否稳定:使用webdriver的Chrome驱动程序的功能,在Chrome用户配置文件中设置一个"异常"。基本上,我在量角器配置文件中添加了以下几行:

capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'prefs': {
'profile.content_settings.exceptions.clipboard': {
'http://localhost:8000,*': {'last_modified': Date.now(), 'setting': 1}
}
}
}
}

我通过查看Chrome配置文件中的Default/Preferences文件找到了这个值。

它现在对我有效,但我不想使用未记录的功能,因为它们可以随时更改而不需要通知。你知道更好的方法吗?谢谢

如果有人想用C#做类似的事情,我已经调整了代码如下:

var options = new ChromeOptions();
var clipboardException = new Dictionary<string, object> {
{"[*.]myurl.com,*", 
new Dictionary<string, object> {
{"last_modified", DateTimeOffset.Now.ToUnixTimeMilliseconds()}, 
{"setting", 1}
}
}
};          
options.AddUserProfilePreference("profile.content_settings.exceptions.clipboard", clipboardException);

在drupal behat.yml中,以下是我如何做到的

prefs:
profile:
content_settings:
exceptions:
clipboard:
'https://place.yoursite.here,*':
last_modified: '13312479654276119'
setting: 1
expiration: "0"

最新更新