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
Class Attribute Summary collapse
Instance Attribute Summary collapse
-
#driver ⇒ Object
readonly
Returns the value of attribute driver.
Instance Method Summary collapse
- #clic ⇒ Object
- #conf ⇒ Object
- #console(binding = nil) ⇒ Object
- #ctxt ⇒ 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_options: nil, firefox_profile: nil, remote_url: nil, headless: false) ⇒ 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_options: nil, firefox_profile: nil, remote_url: nil, headless: false) ⇒ Browser
Returns a new instance of Browser.
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 60 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 |
# File 'lib/webdrone/browser.rb', line 33 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_options: nil, firefox_profile: nil, remote_url: nil, headless: false) env_update(Kernel.binding) if use_env if create_outdir || outdir outdir ||= File.join("webdrone_output", Time.new.strftime('%Y%m%d_%H%M%S')) conf.outdir = outdir end outdir = File.join(Dir.pwd, outdir) if !outdir.nil? && !Pathname.new(outdir).absolute? if remote_url @driver = Selenium::WebDriver.for :remote, url: remote_url, desired_capabilities: browser.to_sym elsif !outdir.nil? && browser.to_sym == :chrome ||= Browser. .add_preference 'download.default_directory', outdir .add_argument '--disable-popup-blocking' .add_argument '--headless' if headless @driver = Selenium::WebDriver.for browser.to_sym, options: elsif !outdir.nil? && browser.to_sym == :firefox firefox_profile ||= Browser.firefox_profile downdir = OS.windows? ? outdir.tr("/", "\\") : 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 @driver.quit rescue StandardError nil end end conf.error = error.to_sym conf.developer = developer conf.timeout = timeout.to_i if timeout conf.logger = logger if developer win_x = win_y = 0 win_w = 0.5 win_h = 1.0 end if win_x || win_y || win_w || win_h x, y, w, h = 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 StandardError => e puts "Ignoring error on window position/resize: #{e}" end elsif maximize self.maximize end end |
Class Attribute Details
.chrome_options ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/webdrone/browser.rb', line 22 def return if defined? = Selenium::WebDriver::Chrome::Options.new .add_preference 'download.prompt_for_download', false .add_preference 'credentials_enable_service:', false end |
.firefox_profile ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/webdrone/browser.rb', line 10 def firefox_profile return @firefox_profile if defined? @firefox_profile @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" @firefox_profile end |
Instance Attribute Details
#driver ⇒ Object (readonly)
Returns the value of attribute driver.
5 6 7 |
# File 'lib/webdrone/browser.rb', line 5 def driver @driver end |
Instance Method Details
#clic ⇒ Object
5 6 7 |
# File 'lib/webdrone/clic.rb', line 5 def clic @clic ||= Clic.new self end |
#conf ⇒ Object
5 6 7 |
# File 'lib/webdrone/conf.rb', line 5 def conf @conf ||= Conf.new self end |
#console(binding = nil) ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/webdrone/browser.rb', line 111 def console(binding = nil) return unless conf.developer binding ||= Kernel.binding.of_caller(1) old_error = conf.error old_developer = conf.developer begin conf.error = :raise conf.developer = false Webdrone.pry_console binding ensure conf.error = old_error conf.developer = old_developer end end |
#ctxt ⇒ Object
5 6 7 |
# File 'lib/webdrone/ctxt.rb', line 5 def ctxt @ctxt ||= Ctxt.new self end |
#exec ⇒ Object
5 6 7 |
# File 'lib/webdrone/exec.rb', line 5 def exec @exec ||= Exec.new self end |
#find ⇒ Object
5 6 7 |
# File 'lib/webdrone/find.rb', line 5 def find @find ||= Find.new self end |
#form ⇒ Object
5 6 7 |
# File 'lib/webdrone/form.rb', line 5 def form @form ||= Form.new self end |
#html ⇒ Object
5 6 7 |
# File 'lib/webdrone/html.rb', line 5 def html @html ||= Html.new self end |
#logs ⇒ Object
46 47 48 |
# File 'lib/webdrone/logg.rb', line 46 def logs @logs ||= Logs.new self end |
#mark ⇒ Object
5 6 7 |
# File 'lib/webdrone/mark.rb', line 5 def mark @mark ||= Mark.new self end |
#maximize ⇒ Object
103 104 105 |
# File 'lib/webdrone/browser.rb', line 103 def maximize @driver.manage.window.maximize end |
#open ⇒ Object
5 6 7 |
# File 'lib/webdrone/open.rb', line 5 def open @open ||= Open.new self end |
#quit ⇒ Object
107 108 109 |
# File 'lib/webdrone/browser.rb', line 107 def quit @driver.quit end |
#shot ⇒ Object
5 6 7 |
# File 'lib/webdrone/shot.rb', line 5 def shot @shot ||= Shot.new self end |
#text ⇒ Object
5 6 7 |
# File 'lib/webdrone/text.rb', line 5 def text @text ||= Text.new self end |
#vrfy ⇒ Object
5 6 7 |
# File 'lib/webdrone/vrfy.rb', line 5 def vrfy @vrfy ||= Vrfy.new self end |
#wait ⇒ Object
5 6 7 |
# File 'lib/webdrone/wait.rb', line 5 def wait @wait ||= Wait.new self end |
#xlsx ⇒ Object
5 6 7 |
# File 'lib/webdrone/xlsx.rb', line 5 def xlsx @xlsx ||= Xlsx.new self end |