2016-01-15 2 views
1

Я хотел бы сделать что-то вроде этого:Скопируйте пасту с помощью Capybara?

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

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

Я не хочу, чтобы имитировать это с send_keys и используя Ctrl + C и Ctrl + V; Я хочу, чтобы это работало в кросс-браузере (особенно на мобильных устройствах).

Существует ли этот API?

ответ

0

Там нет Капибары копировать/вставить 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 после установки диапазона выбора для браузеров, которые его поддерживают, поскольку он эмулирует поведение пользователя лучше.

+0

Спасибо , Это подтвердило мое подозрение - API Capybara для копирования/вставки не существует. –

-1

Для этого нет API.

Вы можете получить элемент из одного браузера

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

Тогда вы можете передать его в другой браузер

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

Вы можете прочитать больше о водосвинке здесь:

Смежные вопросы