Не могу заполнить автоматически форму с механизировать на ruby - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь проверить механизированный камень.Я хотел бы подписаться на сайт, используя форму.Я правильно выбрал все элементы (наверное), но кнопка отправки не отправляет форму.Когда форма отправлена, письмо сразу же принимается.Я новичок в жемчужине, и я тестирую регистрацию на сайте с одним обязательным полем.Я использую веб-сервис для рассылки спама, чтобы проверить, работает ли он, поэтому каждое почтовое поле можно заменить чем-либо до @ moncourrier.fr.nf, а затем проверить, получено ли письмо на веб-сайте yopmail, но я ничего не получил.У вас есть идеи, почему не работает?

require 'rubygems'
require 'mechanize'
require'pry'


agent = Mechanize.new
agent.get('http://blackburnecreek.com/newsletter-registration') do |page|
form=agent.page.forms[1]
button=form.button_with(:value => "Subscribe")
agent.page.forms[1]["EMAIL"]= "testmechanizegem@moncourrier.fr.nf"

agent.submit(form, button)


end

1 Ответ

0 голосов
/ 02 декабря 2018

Ваша форма не отправляется, потому что фактическая форма использует jquery, который отправляет форму с некоторыми дополнительными параметрами.Они отменяют привязку к событию отправки формы и вместо этого выполняют запрос ajax для отправки формы с дополнительным параметром id.

Вы можете подтвердить это, посмотрев на запрос, инициируемый на вкладке сети вашего браузера, в котором содержатся следующие параметры:

enter image description here Кроме того, страница запускается после JavaScript, которыйдобавляет дополнительный параметр id к запросу:

function mce_init_form(){
    jQuery(document).ready( function(jQuery) {
      var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){}  };
      var mce_validator = jQuery("#mc-embedded-subscribe-form").validate(options);
jQuery("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator
      options = { url: 'http://blackburnecreek.us8.list-manage.com/subscribe/post-json?u=68692d660a16c9b7e4be6f51e&id=f19ba31349&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8",

См. часть url: в функции выше.Поэтому, когда вы отправляете его с помощью механизации, вы выполняете неверный запрос (без идентификатора параметра).

Я полагаю, что Mechanize не поддерживает выполнение javascript.Я бы порекомендовал вам использовать капибару, которая использует веб-драйверы, такие как poltergiest, которые облегчают поддержку выполнения js.

...