0

私が書いたスクリプトでは、ユーザーの代わりに認証情報を使用して Amazon に正常にログインしています。次に、フォームに記入して新しい住所を入力しようとしています。これが私の現在のコードです:

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

フォームを送信すると、同じ「Add an Address」フォームが表示されますが、認識できるエラーはなく、ページに新しいものは何もありません。リクエストには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.xしていnewAddress.yません。できないようです。

これが正常に送信されない理由について何か考えはありますか? おそらくSSLの問題ですか?

4

2 に答える 2

0

理解した。フィールドが空になるのでは==なく で名前を設定していました=

于 2013-10-24T23:57:15.057 に答える
0

newAddress はボタンの名前です。.x と .y は、ボタンがクリックされた正確な場所を示します。フォームがあなたを返す理由はたくさんありますが、おそらくあなたの値のいずれかが気に入らなかったでしょう。

于 2013-10-19T01:12:44.570 に答える