Created
October 21, 2011 20:37
-
-
Save xiaotian/1304890 to your computer and use it in GitHub Desktop.
ATT sign-in form response cause mechanize 2.0.x to raise
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SIGN_IN_FORM_URL = "https://www.att.com/olam/loginAction.olamexecute" | |
SIGN_IN_AGAIN_URL = "https://www.att.com/olam/loginDisplay.olamexecute" | |
DATE_REGEX = /\d{2}\/\d{2}\/\d{4}/ | |
def initialize(options = {}) | |
@logger = options[:logger] || Logger.new(STDOUT) | |
@logger.info "Creating Mechanize instance" | |
@agent = Mechanize.new do |agent| | |
agent.user_agent_alias = 'Mac Safari' | |
agent.log = @logger | |
end | |
@logged_in = false | |
@statement_selected = false | |
end | |
def sign_in(account) | |
user = account.account_fields.find_by_name("Wireless Number").value | |
password = account.account_fields.find_by_name("Password").value | |
sign_in_with(user, password) | |
end | |
def sign_in_with(user, password) | |
@logger.info "signing in with id: #{user}, password: *******" | |
signin_page = @agent.get SIGN_IN_FORM_URL | |
@logger.info "locating signin form..." | |
form = signin_page.form("loginActionForm") | |
form or raise Balsa::UnexpectedPage, "unable to find signin form" | |
form.action = parse_signin_form_action(signin_page) | |
form.userid = form.wireless_num = user | |
form.password = form.pass = password | |
form.memberType = "wireless" | |
@logger.info "submitting form..." | |
puts form.buttons.inspect | |
>>>>> main_page = @agent.submit(form, form.buttons.first) | |
Failure/Error: @att.sign_in_with(@user_id, @user_pass) | |
NoMethodError: | |
You have a nil object when you didn't expect it! | |
You might have expected an instance of Array. | |
The error occurred while evaluating nil.[] | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize/page.rb:337:in `charset' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize/page.rb:362:in `meta_charset' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize/page.rb:356:in `map' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize/page.rb:356:in `meta_charset' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize/page.rb:44:in `initialize' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize.rb:570:in `new' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize.rb:570:in `parse' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize/http/agent.rb:559:in `response_parse' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize/http/agent.rb:216:in `fetch' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize.rb:628:in `post_form' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/mechanize-2.0.1/lib/mechanize.rb:520:in `submit' | |
# ./lib/balsa/driver/att_generic.rb:91:in `sign_in_with' | |
# ./spec/lib/balsa/driver/att_generic_spec.rb:18 | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in `instance_eval' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:48:in `run' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:107:in `with_around_hooks' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example.rb:45:in `run' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:294:in `run_examples' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:290:in `map' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:290:in `run_examples' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:262:in `run' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:263:in `run' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:263:in `map' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/example_group.rb:263:in `run' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `run' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `map' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:24:in `run' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/reporter.rb:12:in `report' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:21:in `run' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:80:in `run_in_process' | |
# /home/tiang/.rvm/gems/ruby-1.8.7-p302@balsa/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:69:in `run' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment