Class: Puppeteer::Launcher::Chrome
- Defined in:
- lib/puppeteer/launcher/chrome.rb
Defined Under Namespace
Classes: DefaultArgs
Instance Method Summary collapse
- #connect(options = {}) ⇒ !Promise<!Browser>
- #default_args(options = nil) ⇒ Object
- #executable_path ⇒ string
- #launch(options = {}) ⇒ !Promise<!Browser>
Methods inherited from Base
#initialize, #resolve_executable_path
Constructor Details
This class inherits a constructor from Puppeteer::Launcher::Base
Instance Method Details
#connect(options = {}) ⇒ !Promise<!Browser>
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/puppeteer/launcher/chrome.rb', line 152 def connect( = {}) @browser_options = BrowserOptions.new() browser_ws_endpoint = [:browser_ws_endpoint] browser_url = [:browser_url] transport = [:transport] connection = if browser_ws_endpoint && browser_url.nil? && transport.nil? connect_with_browser_ws_endpoint(browser_ws_endpoint) elsif browser_ws_endpoint.nil? && browser_url && transport.nil? connect_with_browser_url(browser_url) elsif browser_ws_endpoint.nil? && browser_url.nil? && transport connect_with_transport(transport) else raise ArgumentError.new("Exactly one of browserWSEndpoint, browserURL or transport must be passed to puppeteer.connect") end result = connection.('Target.getBrowserContexts') browser_context_ids = result['browserContextIds'] Puppeteer::Browser.create( connection: connection, context_ids: browser_context_ids, ignore_https_errors: @browser_options.ignore_https_errors?, default_viewport: @browser_options., process: nil, close_callback: -> { connection.('Browser.close') }, ) end |
#default_args(options = nil) ⇒ Object
142 143 144 145 146 147 148 |
# File 'lib/puppeteer/launcher/chrome.rb', line 142 def default_args( = nil) if .nil? @default_args ||= DefaultArgs.new(@chrome_arg_options) else DefaultArgs.new(ChromeArgOptions.new()) end end |
#executable_path ⇒ string
203 204 205 |
# File 'lib/puppeteer/launcher/chrome.rb', line 203 def executable_path resolve_executable_path end |
#launch(options = {}) ⇒ !Promise<!Browser>
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/puppeteer/launcher/chrome.rb', line 8 def launch( = {}) @chrome_arg_options = ChromeArgOptions.new() @launch_options = LaunchOptions.new() @browser_options = BrowserOptions.new() chrome_arguments = if !@launch_options.ignore_default_args default_args.to_a elsif @launch_options.ignore_default_args.is_a?(Enumerable) default_args.reject do |arg| @launch_options.ignore_default_args.include?(arg) end.to_a else @chrome_arg_options.args.dup end # # let temporaryUserDataDir = null; if chrome_arguments.none? { |arg| arg.start_with?('--remote-debugging-') } if @launch_options.pipe? chrome_arguments << '--remote-debugging-pipe' else chrome_arguments << '--remote-debugging-port=0' end end temporary_user_data_dir = nil if chrome_arguments.none? { |arg| arg.start_with?('--user-data-dir') } temporary_user_data_dir = Dir.mktmpdir('puppeteer_dev_profile-') chrome_arguments << "--user-data-dir=#{temporary_user_data_dir}" end chrome_executable = @launch_options.executable_path || resolve_executable_path use_pipe = chrome_arguments.include?('--remote-debugging-pipe') runner = Puppeteer::BrowserRunner.new(chrome_executable, chrome_arguments, temporary_user_data_dir) runner.start( handle_SIGHUP: @launch_options.handle_SIGHUP?, handle_SIGTERM: @launch_options.handle_SIGTERM?, handle_SIGINT: @launch_options.handle_SIGINT?, dumpio: @launch_options.dumpio?, env: @launch_options.env, pipe: use_pipe, ) begin connection = runner.setup_connection( use_pipe: use_pipe, timeout: @launch_options.timeout, slow_mo: @browser_options.slow_mo, preferred_revision: @preferred_revision, ) browser = Puppeteer::Browser.create( connection: connection, context_ids: [], ignore_https_errors: @browser_options.ignore_https_errors?, default_viewport: @browser_options., process: runner.proc, close_callback: -> { runner.close }, ) browser.wait_for_target(predicate: ->(target) { target.type == 'page' }) browser rescue runner.kill raise end end |