Class: Puppeteer::Puppeteer

Inherits:
Object
  • Object
show all
Defined in:
lib/puppeteer/puppeteer.rb

Defined Under Namespace

Classes: NoViewport

Instance Method Summary collapse

Constructor Details

#initialize(project_root:, preferred_revision:, is_puppeteer_core:) ⇒ Puppeteer

Returns a new instance of Puppeteer.

Parameters:

  • project_root (String)
  • prefereed_revision (String)
  • is_puppeteer_core (String)


5
6
7
8
9
# File 'lib/puppeteer/puppeteer.rb', line 5

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

#connect(browser_ws_endpoint: nil, browser_url: nil, transport: nil, ignore_https_errors: nil, default_viewport: nil, slow_mo: nil) ⇒ Puppeteer::Browser

Parameters:

  • browser_ws_endpoint (String) (defaults to: nil)
  • browser_url (String) (defaults to: nil)
  • transport (Puppeteer::WebSocketTransport) (defaults to: nil)
  • ignore_https_errors (Boolean) (defaults to: nil)
  • default_viewport (Puppeteer::Viewport|nil) (defaults to: nil)
  • slow_mo (Integer) (defaults to: nil)

Returns:



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/puppeteer/puppeteer.rb', line 97

def connect(
  browser_ws_endpoint: nil,
  browser_url: nil,
  transport: nil,
  ignore_https_errors: nil,
  default_viewport: nil,
  slow_mo: nil
)
  options = {
    browser_ws_endpoint: browser_ws_endpoint,
    browser_url: browser_url,
    transport: transport,
    ignore_https_errors: ignore_https_errors,
    default_viewport: default_viewport,
    slow_mo: slow_mo,
  }.compact
  browser = Puppeteer::BrowserConnector.new(options).connect_to_browser
  if block_given?
    begin
      yield(browser)
    ensure
      browser.disconnect
    end
  else
    browser
  end
end

#default_args(args: nil, user_data_dir: nil, devtools: nil, headless: nil) ⇒ Array<String>

Parameters:

  • args (Array<String>) (defaults to: nil)
  • user_data_dir (String) (defaults to: nil)
  • devtools (Boolean) (defaults to: nil)
  • headless (Boolean) (defaults to: nil)

Returns:

  • (Array<String>)


200
201
202
203
204
205
206
207
208
# File 'lib/puppeteer/puppeteer.rb', line 200

def default_args(args: nil, user_data_dir: nil, devtools: nil, headless: nil)
  options = {
    args: args,
    user_data_dir: user_data_dir,
    devtools: devtools,
    headless: headless,
  }.compact
  launcher.default_args(options)
end

#devicesPuppeteer::Devices

Returns:



181
182
183
# File 'lib/puppeteer/puppeteer.rb', line 181

def devices
  Puppeteer::Devices
end

#executable_path(channel: nil) ⇒ String

Returns:

  • (String)


126
127
128
# File 'lib/puppeteer/puppeteer.rb', line 126

def executable_path(channel: nil)
  launcher.executable_path(channel: channel)
end

#launch(product: nil, channel: nil, executable_path: nil, ignore_default_args: nil, handle_SIGINT: nil, handle_SIGTERM: nil, handle_SIGHUP: nil, timeout: nil, dumpio: nil, env: nil, pipe: nil, args: nil, user_data_dir: nil, devtools: nil, debugging_port: nil, headless: nil, ignore_https_errors: nil, default_viewport: NoViewport.new, slow_mo: nil) ⇒ Puppeteer::Browser

Parameters:

  • product (String) (defaults to: nil)
  • channel (String|Symbol) (defaults to: nil)
  • executable_path (String) (defaults to: nil)
  • ignore_default_args (Array<String>|nil) (defaults to: nil)
  • handle_SIGINT (Boolean) (defaults to: nil)
  • handle_SIGTERM (Boolean) (defaults to: nil)
  • handle_SIGHUP (Boolean) (defaults to: nil)
  • timeout (Integer) (defaults to: nil)
  • dumpio (Boolean) (defaults to: nil)
  • env (Hash) (defaults to: nil)
  • pipe (Boolean) (defaults to: nil)
  • args (Array<String>) (defaults to: nil)
  • user_data_dir (String) (defaults to: nil)
  • devtools (Boolean) (defaults to: nil)
  • headless (Boolean) (defaults to: nil)
  • ignore_https_errors (Boolean) (defaults to: nil)
  • default_viewport (Puppeteer::Viewport|nil) (defaults to: NoViewport.new)
  • slow_mo (Integer) (defaults to: nil)

Returns:



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
# File 'lib/puppeteer/puppeteer.rb', line 32

def launch(
  product: nil,
  channel: nil,
  executable_path: nil,
  ignore_default_args: nil,
  handle_SIGINT: nil,
  handle_SIGTERM: nil,
  handle_SIGHUP: nil,
  timeout: nil,
  dumpio: nil,
  env: nil,
  pipe: nil,
  args: nil,
  user_data_dir: nil,
  devtools: nil,
  debugging_port: nil,
  headless: nil,
  ignore_https_errors: nil,
  default_viewport: NoViewport.new,
  slow_mo: nil
)
  options = {
    channel: channel&.to_s,
    executable_path: executable_path,
    ignore_default_args: ignore_default_args,
    handle_SIGINT: handle_SIGINT,
    handle_SIGTERM: handle_SIGTERM,
    handle_SIGHUP: handle_SIGHUP,
    timeout: timeout,
    dumpio: dumpio,
    env: env,
    pipe: pipe,
    args: args,
    user_data_dir: user_data_dir,
    devtools: devtools,
    debugging_port: debugging_port,
    headless: headless,
    ignore_https_errors: ignore_https_errors,
    default_viewport: default_viewport,
    slow_mo: slow_mo,
  }
  if default_viewport.is_a?(NoViewport)
    options.delete(:default_viewport)
  end

  @product_name = product
  browser = launcher.launch(options)
  if block_given?
    begin
      yield(browser)
    ensure
      browser.close
    end
  else
    browser
  end
end

#network_conditionsPuppeteer::NetworkConditions



191
192
193
# File 'lib/puppeteer/puppeteer.rb', line 191

def network_conditions
  Puppeteer::NetworkConditions
end

#productString

Returns:

  • (String)


140
141
142
# File 'lib/puppeteer/puppeteer.rb', line 140

def product
  launcher.product
end

#register_custom_query_handler(name:, query_one:, query_all:) ⇒ Object



144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/puppeteer/puppeteer.rb', line 144

def register_custom_query_handler(name:, query_one:, query_all:)
  unless name =~ /\A[a-zA-Z]+\z/
    raise ArgumentError.new("Custom query handler names may only contain [a-zA-Z]")
  end

  handler_name = name.to_sym
  if query_handler_manager.query_handlers.key?(handler_name)
    raise ArgumentError.new("A query handler named #{name} already exists")
  end

  handler = Puppeteer::CustomQueryHandler.new(query_one: query_one, query_all: query_all)
  Puppeteer::QueryHandlerManager.instance.query_handlers[handler_name] = handler
end

#with_custom_query_handler(name:, query_one:, query_all:, &block) ⇒ Object



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

def with_custom_query_handler(name:, query_one:, query_all:, &block)
  unless name =~ /\A[a-zA-Z]+\z/
    raise ArgumentError.new("Custom query handler names may only contain [a-zA-Z]")
  end

  handler_name = name.to_sym

  handler = Puppeteer::CustomQueryHandler.new(query_one: query_one, query_all: query_all)
  query_handler_manager = Puppeteer::QueryHandlerManager.instance
  original = query_handler_manager.query_handlers.delete(handler_name)
  query_handler_manager.query_handlers[handler_name] = handler
  begin
    block.call
  ensure
    if original
      query_handler_manager.query_handlers[handler_name] = original
    else
      query_handler_manager.query_handlers.delete(handler_name)
    end
  end
end