Полоса оформления заказа заполните форму в Capybara-webkit

В Java API такого класса нет. Класс Apache Commons, который вы хотите, будет одной из реализаций BidiMap .

Будучи математиком, я бы назвал такую ​​структуру биекцией.

17
задан Ananth 13 August 2014 в 17:33
поделиться

3 ответа

Похоже, что Stripe изменил идентификаторы на элементах оформления заказа. У многих есть динамические идентификаторы, которые не совпадают с некоторыми другими примерами здесь.

Что мне сработало, так это сопоставление элементов с текстом-заполнителем. Вот рабочий фрагмент от 12/06/16:

stripe_card_number = '4242424242424242'

within_frame 'stripe_checkout_app' do
  find_field('Card number').send_keys(stripe_card_number)
  find_field('MM / YY').send_keys "01#{DateTime.now.year + 1}"
  find_field('CVC').send_keys '123'

  find('button[type="submit"]').click
end

page.has_content?('Success!', wait: 30)
9
ответ дан iloveitaly 13 August 2014 в 17:33
поделиться

У меня была точно такая же проблема, и я обнаружил, что следующее решение работает с capybara-webkit, а также с селеном-хромом:

page.find_field('Email').set "test@gmail.com"
page.find_field('Card number').set ('4242424242424242')

«Электронная почта» и «Номер карты» здесь заполнители. Причина, по которой он работает таким образом, а не с find('#email'), заключается в том, что на странице нет элемента с id = 'email'. Капибара правильно не может найти этот элемент, он не существует много раз. Причина в отсутствии элемента в том, что иногда iframe полосы выводится без правильного идентификатора, например: element-with-dynamic-id

find_field выполняет поиск по идентификатору, имени или заполнителю, и в этом случае, заполнитель является единственным атрибутом, который не изменяется в обеих ситуациях и который может быть найден капибарой (например, «тип» тоже не меняется, но я не смог найти способ сделать поиск капибары). по типу, а также тест будет гораздо менее читабельным, чем).

Почему iframe Stripe иногда пропускает эти правильные идентификаторы и заменяет их динамическими идентификаторами? Понятия не имею.

2
ответ дан Maria V 13 August 2014 в 17:33
поделиться

Я сделал его похожим на @humpah, но без злого кода JS.

form_iframe = all('iframe.wysihtml5-sandbox').last
within_frame form_iframe do
  page.find('body').set('SomeContent')
end
0
ответ дан merqlove 13 August 2014 в 17:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: