Class: Webdrone::Browser
- Inherits:
-
Object
- Object
- Webdrone::Browser
- Defined in:
- lib/webdrone/clic.rb,
lib/webdrone/conf.rb,
lib/webdrone/ctxt.rb,
lib/webdrone/exec.rb,
lib/webdrone/find.rb,
lib/webdrone/form.rb,
lib/webdrone/html.rb,
lib/webdrone/logg.rb,
lib/webdrone/mark.rb,
lib/webdrone/open.rb,
lib/webdrone/shot.rb,
lib/webdrone/text.rb,
lib/webdrone/vrfy.rb,
lib/webdrone/wait.rb,
lib/webdrone/xlsx.rb,
lib/webdrone/browser.rb
Constant Summary collapse
- @@firefox_profile =
@@chrome_prefs = nil
Instance Attribute Summary collapse
-
#driver ⇒ Object
Returns the value of attribute driver.
Class Method Summary collapse
Instance Method Summary collapse
- #clic ⇒ Object
- #conf ⇒ Object
- #console(binding = nil) ⇒ Object
- #ctxt ⇒ Object
- #env_update(binding) ⇒ Object
- #exec ⇒ Object
- #find ⇒ Object
- #form ⇒ Object
- #html ⇒ Object
-
#initialize(browser: 'firefox', create_outdir: true, outdir: nil, timeout: 30, developer: false, logger: true, quit_at_exit: true, maximize: true, error: :raise_report, win_x: nil, win_y: nil, win_w: nil, win_h: nil, use_env: true, chrome_prefs: nil, firefox_profile: nil, remote_url: nil) ⇒ Browser
constructor
A new instance of Browser.
- #logs ⇒ Object
- #mark ⇒ Object
- #maximize ⇒ Object
- #open ⇒ Object
- #quit ⇒ Object
- #shot ⇒ Object
- #text ⇒ Object
- #vrfy ⇒ Object
- #wait ⇒ Object
- #xlsx ⇒ Object
Constructor Details
#initialize(browser: 'firefox', create_outdir: true, outdir: nil, timeout: 30, developer: false, logger: true, quit_at_exit: true, maximize: true, error: :raise_report, win_x: nil, win_y: nil, win_w: nil, win_h: nil, use_env: true, chrome_prefs: nil, firefox_profile: nil, remote_url: nil) ⇒ Browser
Returns a new instance of Browser.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/webdrone/browser.rb', line 61 def initialize(browser: 'firefox', create_outdir: true, outdir: nil, timeout: 30, developer: false, logger: true, quit_at_exit: true, maximize: true, error: :raise_report, win_x: nil, win_y: nil, win_w: nil, win_h: nil, use_env: true, chrome_prefs: nil, firefox_profile: nil, remote_url: nil) env_update(Kernel.binding) if use_env if create_outdir or outdir outdir ||= File.join("webdrone_output", Time.new.strftime('%Y%m%d_%H%M%S')) self.conf.outdir = outdir end outdir = File.join(Dir.pwd, outdir) if outdir != nil and not Pathname.new(outdir).absolute? if remote_url @driver = Selenium::WebDriver.for :remote, url: remote_url, desired_capabilities: browser.to_sym elsif outdir != nil and browser.to_sym == :chrome chrome_prefs = Browser.chrome_prefs if chrome_prefs == nil chrome_prefs[:download][:default_directory] = outdir @driver = Selenium::WebDriver.for browser.to_sym, prefs: chrome_prefs, args: ['--disable-popup-blocking'] elsif outdir != nil and browser.to_sym == :firefox firefox_profile = Browser.firefox_profile if firefox_profile == nil downdir = OS.windows? ? outdir.gsub("/", "\\") : outdir firefox_profile['browser.download.dir'] = downdir @driver = Selenium::WebDriver.for browser.to_sym, profile: firefox_profile else @driver = Selenium::WebDriver.for browser.to_sym end if quit_at_exit at_exit do begin @driver.quit rescue end end end self.conf.error = error.to_sym self.conf.developer = developer self.conf.timeout = timeout.to_i if timeout self.conf.logger = logger if developer win_x = win_y = 0 win_w = 0.5 win_h = 1.0 end if win_x or win_y or win_w or win_h x, y, w, h = self.exec.script 'return [window.screenLeft ? window.screenLeft : window.screenX, window.screenTop ? window.screenTop : window.screenY, window.screen.availWidth, window.screen.availHeight];' win_x ||= x win_y ||= y if win_w.is_a? Float win_w = (w * win_w).to_i else win_w ||= w end if win_h.is_a? Float win_h = (h * win_h).to_i else win_h ||= h end begin @driver.manage.window.position = Selenium::WebDriver::Point.new win_x, win_y @driver.manage.window.resize_to(win_w, win_h) rescue => e puts "Ignoring error on window position/resize: #{e}" end else self.maximize if maximize end end |
Instance Attribute Details
#driver ⇒ Object
Returns the value of attribute driver.
4 5 6 |
# File 'lib/webdrone/browser.rb', line 4 def driver @driver end |
Class Method Details
.chrome_prefs ⇒ Object
21 22 23 24 25 26 |
# File 'lib/webdrone/browser.rb', line 21 def self.chrome_prefs if @@chrome_prefs == nil @@chrome_prefs = { download: { prompt_for_download: false }, credentials_enable_service: false } end @@chrome_prefs end |
.firefox_profile ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/webdrone/browser.rb', line 6 def self.firefox_profile if @@firefox_profile == nil @@firefox_profile = Selenium::WebDriver::Firefox::Profile.new @@firefox_profile['startup.homepage_welcome_url.additional'] = 'about:blank' @@firefox_profile['browser.download.folderList'] = 2 @@firefox_profile['browser.download.manager.showWhenStarting'] = false @@firefox_profile['browser.helperApps.neverAsk.saveToDisk'] = "images/jpeg, application/pdf, application/octet-stream, application/download" end @@firefox_profile end |
.firefox_profile=(firefox_profile) ⇒ Object
17 18 19 |
# File 'lib/webdrone/browser.rb', line 17 def self.firefox_profile=(firefox_profile) @@firefox_profile = firefox_profile end |
Instance Method Details
#console(binding = nil) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/webdrone/browser.rb', line 133 def console(binding = nil) return unless conf.developer binding = Kernel.binding.of_caller(1) unless binding old_error = self.conf.error old_developer = self.conf.developer begin self.conf.error = :raise self.conf.developer = false Webdrone.pry_console binding ensure self.conf.error = old_error self.conf.developer = old_developer end end |
#env_update(binding) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/webdrone/browser.rb', line 28 def env_update(binding) bool_vars = [:create_outdir, :developer, :quit_at_exit, :maximize] ENV.keys.select { |env| env.start_with? 'WEBDRONE_' }.each do |env| v = env[9..-1].downcase.to_sym if binding.local_variable_defined? v o = binding.local_variable_get(v) n = ENV[env] if bool_vars.include? v if n == "true" n = true elsif n == "false" n = false else puts "Webdrone: ignoring value '#{n}' for boolean parameter #{v}." next end end binding.local_variable_set(v, n) puts "Webdrone: overriding #{v} from '#{o}' to '#{n}'." elsif v == :mark_times n = ENV[env].to_i puts "Webdrone: setting mark times to #{n}" self.mark.default_times = n elsif v == :mark_sleep n = ENV[env].to_f puts "Webdrone: setting mark sleep to #{n}" self.mark.default_sleep = n else puts "Webdrone: ignoring unknown parameter #{env}." end end end |
#maximize ⇒ Object
125 126 127 |
# File 'lib/webdrone/browser.rb', line 125 def maximize @driver.manage.window.maximize end |
#quit ⇒ Object
129 130 131 |
# File 'lib/webdrone/browser.rb', line 129 def quit @driver.quit end |