Module: Puppeteer::Bidi

Defined in:
lib/puppeteer/bidi.rb,
lib/puppeteer/bidi/core.rb,
lib/puppeteer/bidi/page.rb,
lib/puppeteer/bidi/frame.rb,
lib/puppeteer/bidi/mouse.rb,
lib/puppeteer/bidi/realm.rb,
lib/puppeteer/bidi/errors.rb,
lib/puppeteer/bidi/target.rb,
lib/puppeteer/bidi/browser.rb,
lib/puppeteer/bidi/locator.rb,
lib/puppeteer/bidi/version.rb,
lib/puppeteer/bidi/keyboard.rb,
lib/puppeteer/bidi/lazy_arg.rb,
lib/puppeteer/bidi/js_handle.rb,
lib/puppeteer/bidi/transport.rb,
lib/puppeteer/bidi/wait_task.rb,
lib/puppeteer/bidi/connection.rb,
lib/puppeteer/bidi/core/realm.rb,
lib/puppeteer/bidi/http_utils.rb,
lib/puppeteer/bidi/serializer.rb,
lib/puppeteer/bidi/async_utils.rb,
lib/puppeteer/bidi/core/errors.rb,
lib/puppeteer/bidi/cookie_utils.rb,
lib/puppeteer/bidi/core/browser.rb,
lib/puppeteer/bidi/core/request.rb,
lib/puppeteer/bidi/core/session.rb,
lib/puppeteer/bidi/deserializer.rb,
lib/puppeteer/bidi/file_chooser.rb,
lib/puppeteer/bidi/http_request.rb,
lib/puppeteer/bidi/task_manager.rb,
lib/puppeteer/bidi/http_response.rb,
lib/puppeteer/bidi/query_handler.rb,
lib/puppeteer/bidi/element_handle.rb,
lib/puppeteer/bidi/reactor_runner.rb,
lib/puppeteer/bidi/browser_context.rb,
lib/puppeteer/bidi/console_message.rb,
lib/puppeteer/bidi/core/disposable.rb,
lib/puppeteer/bidi/core/navigation.rb,
lib/puppeteer/bidi/injected_source.rb,
lib/puppeteer/bidi/browser_launcher.rb,
lib/puppeteer/bidi/core/user_prompt.rb,
lib/puppeteer/bidi/exposed_function.rb,
lib/puppeteer/bidi/timeout_settings.rb,
lib/puppeteer/bidi/core/user_context.rb,
lib/puppeteer/bidi/core/event_emitter.rb,
lib/puppeteer/bidi/core/browsing_context.rb,
sig/_supplementary.rbs,
sig/_supplementary.rbs,
sig/puppeteer/bidi.rbs,
sig/puppeteer/bidi/core.rbs,
sig/puppeteer/bidi/page.rbs,
sig/puppeteer/bidi/frame.rbs,
sig/puppeteer/bidi/mouse.rbs,
sig/puppeteer/bidi/realm.rbs,
sig/puppeteer/bidi/errors.rbs,
sig/puppeteer/bidi/target.rbs,
sig/puppeteer/bidi/browser.rbs,
sig/puppeteer/bidi/locator.rbs,
sig/puppeteer/bidi/keyboard.rbs,
sig/puppeteer/bidi/lazy_arg.rbs,
sig/puppeteer/bidi/js_handle.rbs,
sig/puppeteer/bidi/transport.rbs,
sig/puppeteer/bidi/wait_task.rbs,
sig/puppeteer/bidi/connection.rbs,
sig/puppeteer/bidi/core/realm.rbs,
sig/puppeteer/bidi/http_utils.rbs,
sig/puppeteer/bidi/serializer.rbs,
sig/puppeteer/bidi/async_utils.rbs,
sig/puppeteer/bidi/core/errors.rbs,
sig/puppeteer/bidi/cookie_utils.rbs,
sig/puppeteer/bidi/core/browser.rbs,
sig/puppeteer/bidi/core/request.rbs,
sig/puppeteer/bidi/core/session.rbs,
sig/puppeteer/bidi/deserializer.rbs,
sig/puppeteer/bidi/file_chooser.rbs,
sig/puppeteer/bidi/http_request.rbs,
sig/puppeteer/bidi/task_manager.rbs,
sig/puppeteer/bidi/http_response.rbs,
sig/puppeteer/bidi/query_handler.rbs,
sig/puppeteer/bidi/element_handle.rbs,
sig/puppeteer/bidi/reactor_runner.rbs,
sig/puppeteer/bidi/browser_context.rbs,
sig/puppeteer/bidi/console_message.rbs,
sig/puppeteer/bidi/core/disposable.rbs,
sig/puppeteer/bidi/core/navigation.rbs,
sig/puppeteer/bidi/injected_source.rbs,
sig/puppeteer/bidi/browser_launcher.rbs,
sig/puppeteer/bidi/core/user_prompt.rbs,
sig/puppeteer/bidi/exposed_function.rbs,
sig/puppeteer/bidi/timeout_settings.rbs,
sig/puppeteer/bidi/core/user_context.rbs,
sig/puppeteer/bidi/core/event_emitter.rbs,
sig/puppeteer/bidi/core/browsing_context.rbs

Defined Under Namespace

Modules: AsyncUtils, CookieUtils, Core, HTTPUtils, LocatorEvent, VisibilityOption Classes: BaseQueryHandler, Browser, BrowserContext, BrowserLauncher, BrowserTarget, CSSQueryHandler, Connection, ConsoleMessage, DelegatedLocator, Deserializer, ElementHandle, Error, ExposedFunction, FileChooser, FilteredLocator, Frame, FrameDetachedError, FrameRealm, FrameTarget, FunctionLocator, HTTPRequest, HTTPResponse, JSHandle, JSHandleDisposedError, Keyboard, LazyArg, Locator, MappedLocator, Mouse, NewDocumentScriptEvaluation, NodeLocator, Page, PageClosedError, PageTarget, QueryHandler, RaceLocator, ReactorRunner, Realm, RetryableError, SelectorNotFoundError, Serializer, TaskManager, TextQueryHandler, TimeoutError, TimeoutSettings, Transport, UnsupportedOperationError, WaitTask, XPathQueryHandler

Constant Summary collapse

VERSION =
"0.0.6"
REF_PUPPETEER_VERSION =
"25.3.0"
PUPPETEER_INJECTED_SOURCE =

Puppeteer's injected utilities (Poller classes, Deferred, etc.) Source: https://unpkg.com/puppeteer-core@25.3.0/lib/puppeteer/generated/injected.js Version: puppeteer-core@25.3.0

To update this file, run:

bundle exec ruby scripts/update_injected_source.rb

This script provides:

  • RAFPoller: requestAnimationFrame-based polling
  • MutationPoller: MutationObserver-based polling
  • IntervalPoller: setInterval-based polling
  • Deferred: Promise wrapper
  • createFunction: Creates function from string
  • Various query selector utilities

Returns:

  • (Object)
File.read(File.join(__dir__, "injected.js")).freeze

Class Method Summary collapse

Class Method Details

.connect(ws_endpoint, timeout: nil, accept_insecure_certs: false) {|arg0| ... } ⇒ Object

Connect to an existing browser instance

Parameters:

  • ws_endpoint (String)
  • timeout: (Numeric, nil) (defaults to: nil)
  • accept_insecure_certs: (Boolean) (defaults to: false)

Yields:

Yield Parameters:

Yield Returns:

  • (Object)

Returns:

  • (Object)


136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/puppeteer/bidi.rb', line 136

def self.connect(ws_endpoint, timeout: nil, accept_insecure_certs: false, &block)
  unless block
    raise ArgumentError, 'Block is required for connect_with_sync'
  end

  Sync do
    begin
      browser = connect_to_browser_instance(ws_endpoint, timeout: timeout,
                                            accept_insecure_certs: accept_insecure_certs)
      block.call(browser)
    ensure
      browser&.close
    end
  end
end

.connect_to_browser_instance(ws_endpoint, timeout: nil, accept_insecure_certs: false) ⇒ Browser

Connect to an existing browser instance

Parameters:

  • ws_endpoint (String)
  • timeout: (Numeric, nil) (defaults to: nil)
  • accept_insecure_certs: (Boolean) (defaults to: false)

Returns:



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/puppeteer/bidi.rb', line 157

def self.connect_to_browser_instance(ws_endpoint, timeout: nil, accept_insecure_certs: false)
  if async_context?
    Browser.connect(ws_endpoint, timeout: timeout, accept_insecure_certs: accept_insecure_certs)
  else
    runner = ReactorRunner.new
    begin
      browser = runner.sync do
        Browser.connect(ws_endpoint, timeout: timeout, accept_insecure_certs: accept_insecure_certs)
      end
    rescue StandardError
      runner.close
      raise
    end
    # @type var proxy: Browser
    proxy = ReactorRunner::Proxy.new(runner, browser, owns_runner: true)
    proxy
  end
end

.launch(executable_path: nil, user_data_dir: nil, headless: true, args: nil, timeout: nil, accept_insecure_certs: false) {|arg0| ... } ⇒ Object

Launch a new browser instance

Parameters:

  • executable_path: (String, nil) (defaults to: nil)
  • user_data_dir: (String, nil) (defaults to: nil)
  • headless: (Boolean) (defaults to: true)
  • args: (Array[String], nil) (defaults to: nil)
  • timeout: (Numeric, nil) (defaults to: nil)
  • accept_insecure_certs: (Boolean) (defaults to: false)

Yields:

Yield Parameters:

Yield Returns:

  • (Object)

Returns:

  • (Object)


65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/puppeteer/bidi.rb', line 65

def self.launch(executable_path: nil, user_data_dir: nil, headless: true, args: nil, timeout: nil,
                accept_insecure_certs: false, &block)
  unless block
    raise ArgumentError, 'Block is required for launch_with_sync'
  end

  Sync do
    begin
      browser = launch_browser_instance(
        executable_path: executable_path,
        user_data_dir: user_data_dir,
        headless: headless,
        args: args,
        timeout: timeout,
        accept_insecure_certs: accept_insecure_certs
      )
      block.call(browser)
    ensure
      browser&.close
    end
  end
end

.launch_browser_instance(executable_path: nil, user_data_dir: nil, headless: true, args: nil, timeout: nil, accept_insecure_certs: false) ⇒ Browser

Launch a new browser instance

Parameters:

  • executable_path: (String, nil) (defaults to: nil)
  • user_data_dir: (String, nil) (defaults to: nil)
  • headless: (Boolean) (defaults to: true)
  • args: (Array[String], nil) (defaults to: nil)
  • timeout: (Numeric, nil) (defaults to: nil)
  • accept_insecure_certs: (Boolean) (defaults to: false)

Returns:



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
124
125
126
127
128
# File 'lib/puppeteer/bidi.rb', line 96

def self.launch_browser_instance(executable_path: nil, user_data_dir: nil, headless: true, args: nil, timeout: nil,
                                 accept_insecure_certs: false)
  if async_context?
    Browser.launch(
      executable_path: executable_path,
      user_data_dir: user_data_dir,
      headless: headless,
      args: args,
      timeout: timeout,
      accept_insecure_certs: accept_insecure_certs
    )
  else
    runner = ReactorRunner.new
    begin
      browser = runner.sync do
        Browser.launch(
          executable_path: executable_path,
          user_data_dir: user_data_dir,
          headless: headless,
          args: args,
          timeout: timeout,
          accept_insecure_certs: accept_insecure_certs
        )
      end
    rescue StandardError
      runner.close
      raise
    end
    # @type var proxy: Browser
    proxy = ReactorRunner::Proxy.new(runner, browser, owns_runner: true)
    proxy
  end
end