Class: Puppeteer::Launcher::Chrome
- Inherits:
-
Object
- Object
- Puppeteer::Launcher::Chrome
- Defined in:
- lib/puppeteer/launcher/chrome.rb
Defined Under Namespace
Classes: DefaultArgs
Constant Summary collapse
- CHROMIUM_CHANNELS =
{ windows: { 'chrome' => "#{ENV['PROGRAMFILES']}\\Google\\Chrome\\Application\\chrome.exe", 'chrome-beta' => "#{ENV['PROGRAMFILES']}\\Google\\Chrome Beta\\Application\\chrome.exe", 'chrome-canary' => "#{ENV['PROGRAMFILES']}\\Google\\Chrome SxS\\Application\\chrome.exe", 'chrome-dev' => "#{ENV['PROGRAMFILES']}\\Google\\Chrome Dev\\Application\\chrome.exe", 'msedge' => "#{ENV['PROGRAMFILES(X86)']}\\Microsoft\\Edge\\Application\\msedge.exe", }, darwin: { 'chrome' => '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', 'chrome-beta' => '/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta', 'chrome-canary' => '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary', 'chrome-dev' => '/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev', 'msedge' => '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge', }, linux: { 'chrome' => -> { Puppeteer::ExecutablePathFinder.new( 'google-chrome-stable', 'google-chrome', 'chrome', 'chromium-freeworld', 'chromium-browser', 'chromium', ).find_first }, 'chrome-beta' => '/opt/google/chrome-beta/chrome', 'chrome-dev' => '/opt/google/chrome-unstable/chrome', }, }.freeze
Instance Method Summary collapse
- #default_args(options = nil) ⇒ DefaultArgs
- #executable_path(channel: nil) ⇒ string
-
#initialize(project_root:, preferred_revision:, is_puppeteer_core:) ⇒ Chrome
constructor
A new instance of Chrome.
- #launch(options = {}) ⇒ !Promise<!Browser>
- #product ⇒ Object
Constructor Details
#initialize(project_root:, preferred_revision:, is_puppeteer_core:) ⇒ Chrome
Returns a new instance of Chrome.
6 7 8 9 10 |
# File 'lib/puppeteer/launcher/chrome.rb', line 6 def initialize(project_root:, preferred_revision:, is_puppeteer_core:) @project_root = project_root @preferred_revision = preferred_revision @is_puppeteer_core = is_puppeteer_core end |
Instance Method Details
#default_args(options = nil) ⇒ DefaultArgs
194 195 196 |
# File 'lib/puppeteer/launcher/chrome.rb', line 194 def default_args( = nil) DefaultArgs.new(ChromeArgOptions.new( || {})) end |
#executable_path(channel: nil) ⇒ string
199 200 201 202 203 204 205 |
# File 'lib/puppeteer/launcher/chrome.rb', line 199 def executable_path(channel: nil) if channel executable_path_for_channel(channel.to_s) else fallback_executable_path end end |
#launch(options = {}) ⇒ !Promise<!Browser>
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 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 |
# File 'lib/puppeteer/launcher/chrome.rb', line 14 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 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=#{@chrome_arg_options.debugging_port}" end end user_data_dir = chrome_arguments.find { |arg| arg.start_with?('--user-data-dir') } if user_data_dir user_data_dir = user_data_dir.split('=').last unless File.exist?(user_data_dir) raise ArgumentError.new("Chrome user data dir not found at '#{user_data_dir}'") end using_temp_user_data_dir = false else user_data_dir = Dir.mktmpdir('puppeteer_dev_chrome_profile-', ENV['PUPPETEER_TMP_DIR']) chrome_arguments << "--user-data-dir=#{user_data_dir}" using_temp_user_data_dir = true end chrome_executable = if @launch_options.channel executable_path_for_channel(@launch_options.channel.to_s) else @launch_options.executable_path || fallback_executable_path end use_pipe = chrome_arguments.include?('--remote-debugging-pipe') runner = Puppeteer::BrowserRunner.new( false, chrome_executable, chrome_arguments, user_data_dir, using_temp_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, ) browser = begin connection = runner.setup_connection( use_pipe: use_pipe, timeout: @launch_options.timeout, slow_mo: @browser_options.slow_mo, preferred_revision: @preferred_revision, ) Puppeteer::Browser.create( product: product, connection: connection, context_ids: [], ignore_https_errors: @browser_options.ignore_https_errors?, default_viewport: @browser_options., process: runner.proc, close_callback: -> { runner.close }, target_filter_callback: nil, is_page_target_callback: nil, ) rescue runner.kill raise end begin browser.wait_for_target( predicate: ->(target) { target.type == 'page' }, timeout: @launch_options.timeout, ) rescue browser.close raise end browser end |
#product ⇒ Object
269 270 271 |
# File 'lib/puppeteer/launcher/chrome.rb', line 269 def product 'chrome' end |