const copyTextarea = document.querySelector("#copy-link-button");
copyTextarea.focus();
copyTextarea.select();
document.execCommand('copy');
我的测试:
# Copy the link
page.find("#copy-link-button").click
wait_for_ajax
# Visit some other page that I know has an input/text field
visit account_settings_path
input = page.find("#user_email")
# Clear the field
fill_in("user[email]", with: "")
# Paste in the contents of the clipboard
input.base.send_keys([:control, "v"])
# Validate
expect(input.value).to eq("some value");
但是,没有任何内容粘贴到该输入(input.value
和input.text
return“”
)。
谢了!
注意:由于Chrome的最初发布已经改变了可用的权限类型。对于headless解决方案,请访问https://chromedevtools.github.io/devtools-protocol/tot/browser/#type-permissiontype,查看当前可用的权限类型
关于剪贴板内容的访问有很多安全规则,所以试图从Capybara获得粘贴工作真的是一项令人沮丧的练习。此外,当Ctrl/Command v作为击键发送时,大多数浏览器实际上不会执行任何操作,因为这是系统触发的操作,而不是浏览器触发的操作。
但是,由于您只想验证复制是否有效,实际上并不需要触发粘贴,您只需要绕过使用剪贴板API的权限要求。如果您正在使用Chrome(在非headless配置中--当前不使用headless),可以通过在驱动程序注册中设置profile.content_settings.exceptions.clipboard
首选项来实现
Capybara.register_driver :chrome do |app|
options = Selenium::WebDriver::Chrome::Options.new
options.add_preference('profile.content_settings.exceptions.clipboard', {
'*': {'setting': 1}
})
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
如果您在headless模式下运行,并使用最新的Capybara和selenium和Chrome,另一个选择是使用CDP来授予权限
page.driver.browser.execute_cdp('Browser.grantPermissions', origin: page.server_url, permissions: ['clipboardRead', 'clipboardWrite'])
一旦确定了权限,就可以使用evaluate_async_script
访问剪贴板数据
clip_text = page.evaluate_async_script('navigator.clipboard.readText().then(arguments[0])')
备注:
问题内容: 当我尝试使用粘贴到单元格时,我要粘贴的单元格保持空白,但setValueAt()似乎可以正常工作。另外,当我尝试从一个单元格剪切或复制JPopupMenu时,如果要粘贴到另一个单元格,则我的“粘贴”选项将保持禁用状态。我不知道为什么。我的代码如下。 Here’s my code for 问题答案: 根据您的示例代码,并且必须填写空白,它对 我有用… Now, maybe you’d l
在Linux上不接触鼠标,在命令模式下的VIM和系统剪贴板之间复制粘贴的最快方法是什么?
问题是,从vim到剪贴板的复制/粘贴停止工作。我不知道为什么。。。 在中,我也没有看到和缓冲区... 这是我的。vimrc,如果需要的话。 有什么建议吗? 谢谢
问题内容: 我正在寻找一个如何将文本复制到iOS剪贴板的干净示例,然后可以在其他应用程序中使用/粘贴该文本。 此功能的优点是可以快速复制文本,而无需传统文本复制的标准文本突出显示功能。 我假设键类在其中,但是在它们提供的代码示例中找不到相关的区域。 问题答案: 如果您只需要纯文本,则可以使用属性。它既可读又可写: (从剪贴板中 读取数据时 ,UIPasteboard文档还建议您首先检查一下,“以避
我可以假设Mac OS X剪贴板图像数据是png吗? 当我尝试MIME检测剪贴板数据时,它返回。 这会导致每个浏览器下载图像而不是显示图像。 如果我强制将内容类型设置为image/png,一切看起来都很好,但我想知道是否有一种方法可以让我不必做出这样的假设? 我用https://github.com/broofa/node-mime检测MIME类型。
我可以使vim粘贴从和到系统的剪贴板?