我很乐意做这样的事情:
div = find '#some-div'
copy_to_clipboard(div)
input = find '#my-input'
paste_from_clipboard(input)
我不想使用send_keys
并使用Ctrl + C和Ctrl + V来模拟此项;我希望这可以跨浏览器工作(特别是在移动设备上)。
此API是否存在?
答案 0 :(得分:1)
我发现的最简单的方法:
element.send_keys [:control, 'c']
element.send_keys [:control, 'v']
答案 1 :(得分:0)
没有Capybara复制/粘贴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,因为它模拟了用户行为更好。
答案 2 :(得分:0)
这是一个古老的版本,但是您不需要使用capybara
,但是解决方法是使用这个非常简单的gem:
答案 3 :(得分:-1)
没有API可以做到。
您可以从一个浏览器获取元素
div = page.find('#some-div')
然后您可以将其传递给其他浏览器
fill_in '#some-other-div' with => div
您可以在此处详细了解水豚:https://github.com/jnicklas/capybara