0

在我寫的腳本中,我代表用戶使用憑據成功登錄到亞馬遜。然後,我正在填寫表單以輸入新地址。這裏是我當前的代碼:無法通過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 = "[email protected]" 
    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問題嗎?

回答

0

想通了。我的名字是==,而不是=,導致字段爲空

0

newAddress是按鈕的名稱。 .x和.y表示按鈕上的確切位置。爲什麼表單會將你退回,很可能是因爲你不喜歡你的價值觀。

+0

當我通過普通的瀏覽器UI輸入這些字段值時,所有這些字段值都有效。我不知道.x和.y座標是否需要提交表單 –