0

제가 작성한 스크립트에서 사용자 자격 증명을 사용하여 아마존에 성공적으로 로그인하고 있습니다. 그런 다음 양식을 작성하여 새 주소를 입력하려고합니다.Mechanize (Ruby)를 통해 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 = "[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 요청에는 동일한 양식이 기재되어 있습니다.

&newAddress.x=55&newAddress.y=17&newAddress=Save+%26+Continue&addressID=&sessionId=176-3067966-1293712 

내가 설정하고 있지 않다 :

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 

나에게 약자 중요한 것은 그것의 마지막 부분입니다 : 내가 POST 요청을 검사 할 때

, 여기에 내가 무엇을 얻을

있어 newAddress.x 또는 newAddress.y 어디서나 나는 할 수없는 것 같습니다.

이것이 성공적으로 제출되지 않는 이유에 대한 아이디어가 있습니까? SSL 문제일까요?

답변

0

알아 냈습니다. 필드가 비어있는 이 아닌 ==으로 이름을 설정했습니다.

0

newAddress는 버튼의 이름입니다. .x 및 .y는 버튼이 클릭 된 정확한 위치를 나타냅니다. 양식에서 다시 되돌릴 수있는 이유는 많습니다. 가장 큰 이유는 귀하의 가치 중 하나가 마음에 들지 않기 때문입니다.

+0

일반 브라우저 UI를 통해이 필드 값을 입력하면 모두 작동합니다. 양식 제출에 .x 및 .y 좌표가 필요한지 궁금합니다. –