Mit Ruby und Mechanize zu füllen, in einer remote-login-Formular Rätsel

Ich versuche zur Implementierung eines Ruby-Skripts, das wird nehmen Sie einen username und Passwort, dann gehen Sie zum ausfüllen der Kontodaten auf ein login-Formular auf einer anderen website und zurück, das dann einem link Folgen, und rufen Sie die Konto-Geschichte. Dazu bin ich mit dem Mechanize gem.

Habe ich nach dem Beispiele hier
aber ich kann nicht scheinen, um es zu arbeiten. Ich habe diese vereinfacht stark gesunken, um zu versuchen, get it to work in teilen aber auch der vermeintlich einfache ausfüllen eines Formulars hält mich auf.

Hier ist mein code:

# script gets called with a username and password for the site
require 'mechanize'


#create a mechanize instant
agent = Mechanize.new 

agent.get('https://mysite/Login.aspx') do |login_page|

    #fill in the login form on the login page
    loggedin_page = login_page.form_with(:id => 'form1') do |form|
        username_field = form.field_with(:id => 'ContentPlaceHolder1_UserName')
        username_field.value = ARGV[0]
        password_field = form.field_with(:id => 'ContentPlaceHolder1_Password')
        password_field.value = ARGV[1]


        button = form.button_with(:id => 'ContentPlaceHolder1_btnlogin')
    end.submit(form , button)

    #click the View my history link
    #account_history_page = loggedin_page.click(home_page.link_with(:text => "View My History"))

    ####TEST to see if i am actually making it past the login page
    #### and that the View My History link is now visible amongst the other links on the page
    loggedin_page.links.each do |link|
        text = link.text.strip
        next unless text.length > 0
        puts text if text == "View My History"
    end
    ##TEST 

end

Terminal Fehlermeldung:

stackqv2.rb:19:in `block in <main>': undefined local variable or method `form' for main:Object (NameError)
from /usr/local/lib/ruby/gems/1.9.1/gems/mechanize-2.5.1/lib/mechanize.rb:409:in `get'
from stackqv2.rb:8:in `<main>'
  • Sind Sie sicher, dass Sie bekommen, dass der Fehler mit dem code, den du gepostet hast? Es gibt keine form_with auf Linie 14. Es sieht aus wie Sie bekommen würde, die Fehler-wenn Sie möchten, genannt agent.form_with
  • Korrigiert habe ich die Fehlermeldung die ich erhalte.
InformationsquelleAutor John | 2012-12-19
Schreibe einen Kommentar