使用水豚复制粘贴?
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:
我找到的最简单的方法:
element.send_keys [:control, 'c']
element.send_keys [:control, 'v']
我很想做这样的事情:
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:
我找到的最简单的方法:
element.send_keys [:control, 'c']
element.send_keys [:control, 'v']