class OkcBot::Browser
Attributes
base_url[R]
browser[R]
driver[R]
Public Class Methods
new(args)
click to toggle source
# File lib/okc_bot/browser.rb, line 6 def initialize(args) @username = args[:username] @password = args[:password] @driver = args[:driver].to_sym @browser = Watir::Browser.new driver @base_url = "http://www.okcupid.com" end
Public Instance Methods
load_entire_page()
click to toggle source
# File lib/okc_bot/browser.rb, line 60 def load_entire_page load_more_messages unless no_new_messages_found load_entire_page else @browser.scroll.to :top end end
load_more_messages()
click to toggle source
# File lib/okc_bot/browser.rb, line 49 def load_more_messages @before = @browser.spans(:class => "previewline").to_a.size @browser.scroll.to :bottom sleep 1 @after = @browser.spans(:class => "previewline").to_a.size end
load_session(saved_cookies)
click to toggle source
# File lib/okc_bot/browser.rb, line 39 def load_session(saved_cookies) @browser.goto("https://okcupid.com") @browser.cookies.clear saved_cookies.each do |saved_cookie| @browser.cookies.add(saved_cookie[:name], saved_cookie[:value]) end @browser.goto("https://okcupid.com") end
login()
click to toggle source
randomized delays between actions minimizes bot detection
# File lib/okc_bot/browser.rb, line 70 def login @browser.goto("http://www.okcupid.com") @browser.link(:text => "Sign in").click sleep (1..3).to_a.sample.to_i @browser.text_field(:id => 'login_username').set(@username) sleep (1..3).to_a.sample.to_i @browser.text_field(:id => 'login_password').set(@password) sleep (1..3).to_a.sample.to_i @browser.button(:id => 'sign_in_button').click sleep (1..3).to_a.sample.to_i return logged_in? end
logout()
click to toggle source
# File lib/okc_bot/browser.rb, line 107 def logout @browser.close end
no_new_messages_found()
click to toggle source
# File lib/okc_bot/browser.rb, line 56 def no_new_messages_found @before == @after end
save_session()
click to toggle source
# File lib/okc_bot/browser.rb, line 35 def save_session @browser.cookies.to_a end
visit_im_history_page()
click to toggle source
# File lib/okc_bot/browser.rb, line 95 def visit_im_history_page visit "imhistory" end
visit_match_page()
click to toggle source
# File lib/okc_bot/browser.rb, line 103 def visit_match_page visit "match" end
visit_messages_page()
click to toggle source
# File lib/okc_bot/browser.rb, line 85 def visit_messages_page visit "messages" load_entire_page end
visit_quickmatch_page()
click to toggle source
# File lib/okc_bot/browser.rb, line 91 def visit_quickmatch_page visit "quickmatch" end
visit_sent_messages_page()
click to toggle source
# File lib/okc_bot/browser.rb, line 99 def visit_sent_messages_page visit "messages?folder=2" end
Private Instance Methods
logged_in?()
click to toggle source
# File lib/okc_bot/browser.rb, line 28 def logged_in? # return @browser.h1(:id => 'home_heading').exists? return true end
visit(page)
click to toggle source
# File lib/okc_bot/browser.rb, line 17 def visit(page) begin @browser.goto "#{@base_url}/#{page}" rescue Errno::ECONNREFUSED puts "Webdriver reconnecting..." @browser = Watir::Browser.new $driver.to_sym login @browser.goto "#{@base_url}/#{page}" end end