在我寫的腳本中,我代表用戶使用憑據成功登錄到亞馬遜。然後,我正在填寫表單以輸入新地址。這裏是我當前的代碼:無法通過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.x
或newAddress.y
任何地方,我似乎無法。
任何想法爲什麼這不是成功提交?它可能是SSL問題嗎?
當我通過普通的瀏覽器UI輸入這些字段值時,所有這些字段值都有效。我不知道.x和.y座標是否需要提交表單 –