ruby-on-rails - 无法通过 Mechanize (Ruby) 提交亚马逊表单

标签 ruby-on-rails ruby ruby-on-rails-3 mechanize mechanize-ruby

在我编写的脚本中,我代表用户使用他们的凭据成功登录到亚马逊。然后我尝试填写表格以输入新地址。这是我当前的代码:

class AmazonCrawler
  def initialize
    @agent = Mechanize.new do |agent|
      agent.user_agent_alias = 'Mac Safari'
      agent.follow_meta_refresh = true
      agent.redirect_ok = true
    end
  end

  def login
    login_url = "https://www.amazon.com/gp/css/account/address/view.html?ie=UTF8&ref_=ya_add_address&viewID=newAddress"
    @agent.get(login_url)
    form = @agent.page.forms.first
    form.email = "whatever@gmail.com"
    form.radiobuttons.last.check
    form.password = "my_password"
    dashboard = @agent.submit(form)
  end
end

class UsersController < ApplicationController

  def index
    response = AmazonCrawler.new.login
    form = response.forms[1]

    # fill out form
    form.enterAddressFullName == "Your Name"
    form.enterAddressAddressLine1 = "123 Main Street"
    form.enterAddressAddressLine2 = "Apartment 34"
    form.enterAddressCity = "San Francisco"
    form.enterAddressStateOrRegion = "CA"
    form.enterAddressPostalCode = "94101"
    form.enterAddressPhoneNumber = "415-555-1212"
    form.AddressType = "RES"
    form.enterAddressIsDomestic = "0"
    form.GateCode = ""

    new_response = form.submit( form.button_with(value: /Save.*Continue/) )
  end

end

我提交了表格,它把我带到同一个“添加地址”表格,但没有明显的错误,页面上没有任何新内容。 new_response请求填写了相同的表格。

当我检查发布请求时,这是我得到的:
enterAddressFullName=test+user&enterAddressAddressLine1=123+Main+Street&enterAddressAddressLine2=123&enterAddressCity=san+francisco&enterAddressStateOrRegion=ca&enterAddressPostalCode=94101&enterAddressCountryCode=US&enterAddressPhoneNumber=4155551212&enterAddressIsDomestic=0&AddressType=RES&GateCode=&isDomestic=0&newAddress.x=55&newAddress.y=17&newAddress=Save+%26+Continue&addressID=&sessionId=204-4423391-1593712

对我来说最突出的是它的最后一部分:
&newAddress.x=55&newAddress.y=17&newAddress=Save+%26+Continue&addressID=&sessionId=176-3067966-1293712

我没有设置 newAddress.xnewAddress.y任何地方,我似乎都做不到。

关于为什么这不能成功提交的任何想法?可能是 SSL 问题吗?

最佳答案

newAddress 是按钮的名称。 .x 和 .y 表示点击按钮的确切位置。表单会让您返回的原因有很多,很可能它不喜欢您的一个值(value)观。

关于ruby-on-rails - 无法通过 Mechanize (Ruby) 提交亚马逊表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19459856/

相关文章:

ruby-on-rails - 添加标签到输入

ruby-on-rails - 在 rails 中转换路线参数

ruby-on-rails-3 - 导轨 3 : Access to twitter bootstrap variables + mixins without importing it

javascript - 将工具提示与 link_to 结合使用(Ruby on Rails 3.2.3)

ruby-on-rails - 在 Rails 中以编程方式删除关联

ruby - if 语句中的局部变量

javascript - Rails 5 - ExecJS::运行时错误

ruby-on-rails - 使用 ruby​​ on rails 的在线音频流

ruby-on-rails - `const_get' : uninitialized constant [class] (NameError)` after file save in Docker with Spring

ruby-on-rails - Webrat 和 Rails : Using assert_contain after click_button gives me "You are being redirected"