使用水豚复制粘贴?

Copy-paste using Capybara?

我很想做这样的事情:

div = find '#some-div'
copy_to_clipboard(div)

input = find '#my-input'
paste_from_clipboard(input)

我不想用 send_keys 和使用 Ctrl+C 和 Ctrl+V 来模拟这个;我希望它能跨浏览器工作(尤其是在移动设备上)。

这个API存在吗?

没有水豚 copy/paste API - 如果您只想将可见文本复制到输入中,那么您可以这样做

div_text = find('#some-div').text()
find('#my-input').set(div_text)

如果这不符合您的要求,那么您可以使用#execute_script 创建一个选择范围,例如

var range = document.createRange();
range.setStart( <start node>, <start node character offset> );
range.setEnd( <end node>, <end node character offset> ); 

window.getSelection().removeAllRanges();
window.getSelection().addRange(range);

然后找到您的目标元素并将其值设置为 window.getSelection().toString()。请注意,这并没有真正模拟用户会做什么,所以如果您实际使用它来测试应用程序,我仍然建议在为支持它的浏览器设置选择范围后使用 ctrl/cmd-c/v,因为它可以更好地模拟用户行为。

没有API可以做到。

您可以从一个浏览器获取元素

div = page.find('#some-div')

那你就可以传给别的浏览器了

fill_in '#some-other-div' with => div

您可以在这里阅读更多关于水豚的信息:https://github.com/jnicklas/capybara

这是一个旧的,但是您不需要使用 capybara,但是解决方法是使用这个非常简单的 gem:

https://github.com/janlelis/clipboard

我找到的最简单的方法:

element.send_keys [:control, 'c']
element.send_keys [:control, 'v']