使用 Protractor 和 webdriver 在自动化测试中启用剪贴板

hir*_*tan 7 clipboard selenium selenium-chromedriver protractor

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

剪贴板权限

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

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

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

我通过查看Default/PreferencesChrome 配置文件中的内部文件找到了该值。

它现在对我有用,但我不想使用未记录的功能,因为它们可以随时更改,恕不另行通知。你知道这样做的更好方法吗?谢谢。

Max*_*rdt 3

如果有人想用 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);
Run Code Online (Sandbox Code Playgroud)