Skip to content

Instantly share code, notes, and snippets.

@xiaotian
Created October 21, 2011 20:37
Show Gist options
  • Save xiaotian/1304890 to your computer and use it in GitHub Desktop.
Save xiaotian/1304890 to your computer and use it in GitHub Desktop.
ATT sign-in form response cause mechanize 2.0.x to raise
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