class Dinero::Bank::Scottrade
San Diego County Credit Union
Constants
- CONNECTION_TIMEOUT
- LOGIN_URL
Public Instance Methods
accounts()
click to toggle source
extract account data from the account summary page
# File lib/dinero/banks/scottrade.rb, line 113 def accounts return @accounts if @accounts @accounts = [ brokerage_account, bank_account ].compact end
after_successful_login()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 53 def after_successful_login # the subdomain frequently changes, so capture the actual URL # so we can return to the page if necessary. @accounts_summary_url = connection.current_url end
bank_account()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 106 def bank_account if data = bank_data Account.new :bank, "Bank", "", data[:balance], data[:available] end end
bank_data()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 97 def bank_data rows = bank_table.xpath("tbody/tr").map{|tr| tr.xpath("td").map(&:text)} available = rows.shift.last balance = rows.shift.last return { available: available, balance: balance } rescue return nil end
bank_table()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 79 def bank_table table = accounts_summary_document.css("#bankBalance66") end
brokerage_account()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 92 def brokerage_account data = brokerage_data Account.new :brokerage, username, username, data[:balance], data[:available] end
brokerage_data()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 83 def brokerage_data rows = brokerage_table.xpath("tbody/tr").map{|tr| tr.xpath("td").map(&:text)} available = rows.shift.last rows.shift rows.shift balance = rows.shift.last return { available: available, balance: balance } end
brokerage_table()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 75 def brokerage_table accounts_summary_document.css("#ctl00_PageContent_ctl02_w1_widgetContent1_tblBalanceElements66").first end
default_options()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 8 def default_options { timeout: CONNECTION_TIMEOUT, login_url: LOGIN_URL } end
expand_bank_table()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 68 def expand_bank_table return unless connection.page_source =~ /ctl00_PageContent_ctl02_w1_widgetContent1_lblDisplayBankBalanceLink/ expand_link = connection.find_element(id: "ctl00_PageContent_ctl02_w1_widgetContent1_lblDisplayBankBalanceLink") expand_link.click wait.until { connection.find_element(id: "bankBalance66") } end
goto_accounts_summary_page()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 63 def goto_accounts_summary_page return if authenticated? && on_accounts_summary_page? authenticated? ? connection.navigate.to(@accounts_summary_url) : login! end
on_accounts_summary_page?()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 59 def on_accounts_summary_page? connection.page_source =~ /Brokerage Balances/ end
post_credentials!()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 45 def post_credentials! post_username! post_password! skip_confirmations_page skip_monthly_statements_modal expand_bank_table end
post_password!()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 20 def post_password! screenshot_on_error do password_field = connection.find_element(id: "ctl00_body_txtPassword") password_field.send_keys password login_btn = connection.find_element(id: "ctl00_body_btnLogin") login_btn.click end end
post_username!()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 12 def post_username! screenshot_on_error do wait.until { connection.find_element(id: "ctl00_body_txtAccountNumber") } username_field = connection.find_element(id: "ctl00_body_txtAccountNumber") username_field.send_keys username end end
skip_confirmations_page()
click to toggle source
# File lib/dinero/banks/scottrade.rb, line 30 def skip_confirmations_page if connection.page_source =~ /has trade confirmations/ button = connection.find_element(id: "ctl00_body_btnViewLater") button.click end end
skip_monthly_statements_modal()
click to toggle source
<button type=“button” class=“ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only” role=“button” aria-disabled=“false”><span class=“ui-button-text”>Close</span></button>
# File lib/dinero/banks/scottrade.rb, line 38 def skip_monthly_statements_modal if connection.page_source =~ /ui\-dialog\-title\-monthlyStatementsDiv/ button = connection.find_element(xpath: "button[@class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only']") button.click end end