如何在Capybara与Selenium的headless Chrome中使用剪贴板功能
报错根因
你遇到的NoMethodError: undefined method 'execute_cdp'报错是因为当前使用的Selenium WebDriver版本不支持该接口:execute_cdp是Selenium 4.0及以上版本才新增的Chrome DevTools Protocol调用能力,你使用的3.6版本不存在该方法。
解决方案
提供两种适配不同需求的方案:
方案1:升级依赖(推荐,可直接使用CDP相关功能)
- 升级Selenium WebDriver到4.x版本,适配你当前Ruby 2.4.10的最高可用版本为4.8.x,执行安装命令:
gem install selenium-webdriver -v '~> 4.8.0' - 同步升级Chrome浏览器到90+版本,确保ChromeDriver版本和浏览器版本完全一致,避免版本不兼容问题。
方案2:不升级现有环境的替代方案
你当前使用的Chrome 74版本支持已废弃但仍可正常运行的document.execCommand方法,可以直接通过Capybara执行JS实现剪贴板操作:
- 模拟复制操作:
# 先选中需要复制的目标文本后执行以下代码 page.execute_script("document.execCommand('copy')")
- 模拟粘贴操作:
# 先聚焦到目标输入框 target_input = find('#你的输入框ID') target_input.click page.execute_script("document.execCommand('paste')")
内容的提问来源于stack exchange,提问作者user3636388
相关产品推荐
相关产品推荐

