Удаление содержимого из текстового поля с помощью Capybara
Я пишу script, который заполняет текстовые поля Capybara, но перед заполнением полей я хочу, чтобы поля были пустыми и этот текст не был автозаполнен. В принципе, я ищу противоположность
(Object) fill_in(locator, options = {}) #empty_content_of? delete?
найдено здесь: http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Actions. Совет?
Ответы
Ответ 1
После борьбы с этим я спросил коллегу, и решение должно было использовать следующее:
fill_in(locator, with: "")
Итак, например:
fill_in "Name", with: ""
Это имеет смысл и, вероятно, интуитивно для многих, но я был в тупике и не мог найти ответ на SO, поэтому я думал, что опубликую об этом на случай, если это поможет кому-либо.
Ответ 2
вы можете использовать собственные привязки selenium для очистки поля ввода без заполнения пустой строки
element = find('locator')
element.native.clear
Я предпочитаю этот вариант, а не fill_in
.
Также, если вы думаете об этом, заполните его, чтобы найти свой локатор по метке или имени, поэтому, если у него нет метки или имени, вам все равно придется использовать find
Ответ 3
Для меня работало только это решение:
fill_in('Foo', with: 'bar', fill_options: { clear: :backspace })
У меня есть Vue.js на веб-интерфейсе.
Ответ 4
Для Реакта вы должны сделать больше, чем это. fill_in field, with: ''
делает native.clear
. Что не очень хорошо с React. Как не fill_in field, with: 'some text'
. Так как он делает arguments[0].value = ''
до ввода текста.
Я столкнулся с проблемами с react-datetime
. Я решил, что это:
def fill_in_react_datetime n, options
with = options[:with] == '' ? '' : format_date(options[:with])
fill_in n, with: with, fill_options: {clear: [[:control, 'a'], :delete]}
end
Ответ 5
Решение, которое работает для меня и всегда было надежным:
field = find('locator')
field.value.length.times { field.send_keys [:backspace]} }
В терминах Capybara, имитирующих поведение пользователя, мне это тоже кажется правильным.