如何在Selenium WebDriver(Javascript+Grunt)自动化测试中启用剪贴板权限?
问题
如何在基于Selenium WebDriver、Javascript和Grunt的自动化测试中启用/允许剪贴板权限弹窗?
已尝试使用--enable-clipboard、--enable-clipboard-features启动参数,以及配置chromeOptions的剪贴板偏好设置,但均无效果。相关尝试代码如下:
import { Builder, Capabilities } from 'selenium-webdriver'; const chromeOptions = { // args: ['--enable-clipboard'] args: ['--enable-clipboard-features'] }; const driver = await new Builder() .withCapabilities(Capabilities.chrome()) .setChromeOptions(chromeOptions) .build();
另一段无效的配置代码:
capabilities: { 'browserName': 'chrome', 'chromeOptions': { 'desiredCapabilities/goog:chromeOptions/prefs/profile.content_settings.exceptions.clipboard', { '[*.],*': { last_modified: '1576491240619', setting: 1 }, } } } }
解决方案
以下是适配新版Selenium和Chrome浏览器的有效配置方法:
修正剪贴板权限偏好配置路径
旧版的权限存储路径已被调整,需改用profile.content_settings.exceptions.clipboard_content_setting,同时保证参数结构正确。示例代码:import { Builder, Capabilities } from 'selenium-webdriver'; const chromeOptions = { prefs: { 'profile.content_settings.exceptions.clipboard_content_setting': { '[*.],*': { 'setting': 1, // 1=允许,2=阻止,0=询问弹窗 'last_modified': Date.now() } } } }; const driver = await new Builder() .withCapabilities(Capabilities.chrome()) .setChromeOptions(chromeOptions) .build();组合启动参数确保弹窗正常触发
搭配弹窗拦截禁用参数和剪贴板权限参数,避免浏览器自动屏蔽弹窗:const chromeOptions = { args: [ '--disable-popup-blocking', '--enable-clipboard-features=clipboard-read,clipboard-write' ], prefs: { 'profile.default_content_setting_values.clipboard': 0 // 0表示触发询问弹窗 } };Grunt环境下的W3C标准配置
新版Selenium遵循W3C规范,需将chromeOptions嵌套在goog:chromeOptions下,Grunt配置示例:grunt.initConfig({ selenium: { options: { capabilities: { browserName: 'chrome', 'goog:chromeOptions': { args: ['--disable-popup-blocking'], prefs: { 'profile.content_settings.exceptions.clipboard_content_setting': { '[*.],*': { setting: 0, last_modified: Date.now() } } } } } } } });
内容的提问来源于stack exchange,提问作者pavankc
相关产品推荐
相关产品推荐

