Class: Playwright::Browser

Inherits:
PlaywrightApi show all
Defined in:
lib/playwright_api/browser.rb

Overview

A Browser is created via [‘method: BrowserType.launch`]. An example of using a `Browser` to create a `Page`:

“‘python sync from playwright.sync_api import sync_playwright, Playwright

def run(playwright: Playwright):

firefox = playwright.firefox
browser = firefox.launch()
page = browser.new_page()
page.goto("https://example.com")
browser.close()

with sync_playwright() as playwright:

run(playwright)

“‘

Instance Method Summary collapse

Methods inherited from PlaywrightApi

#initialize, unwrap, wrap

Constructor Details

This class inherits a constructor from Playwright::PlaywrightApi

Instance Method Details

#browser_typeObject

Get the browser type (chromium, firefox or webkit) that the browser belongs to.



22
23
24
# File 'lib/playwright_api/browser.rb', line 22

def browser_type
  wrap_impl(@impl.browser_type)
end

#close(reason: nil) ⇒ Object

In case this browser is obtained using [‘method: BrowserType.launch`], closes the browser and all of its pages (if any were opened).

In case this browser is connected to, clears all created contexts belonging to this browser and disconnects from the browser server.

NOTE: This is similar to force quitting the browser. Therefore, you should call [‘method: BrowserContext.close`] on any `BrowserContext`’s you explicitly created earlier with [‘method: Browser.newContext`] before calling [`method: Browser.close`].

The ‘Browser` object itself is considered to be disposed and cannot be used anymore.



36
37
38
# File 'lib/playwright_api/browser.rb', line 36

def close(reason: nil)
  wrap_impl(@impl.close(reason: unwrap_impl(reason)))
end

#connected?Boolean

Indicates that the browser is connected.

Returns:

  • (Boolean)


57
58
59
# File 'lib/playwright_api/browser.rb', line 57

def connected?
  wrap_impl(@impl.connected?)
end

#contextsObject

Returns an array of all open browser contexts. In a newly created browser, this will return zero browser contexts.

Usage

“‘python sync browser = pw.webkit.launch() print(len(browser.contexts)) # prints `0` context = browser.new_context() print(len(browser.contexts)) # prints `1` “`



51
52
53
# File 'lib/playwright_api/browser.rb', line 51

def contexts
  wrap_impl(@impl.contexts)
end

#new_browser_cdp_sessionObject

NOTE: CDP Sessions are only supported on Chromium-based browsers.

Returns the newly created browser session.



65
66
67
# File 'lib/playwright_api/browser.rb', line 65

def new_browser_cdp_session
  wrap_impl(@impl.new_browser_cdp_session)
end

#new_context(acceptDownloads: nil, baseURL: nil, bypassCSP: nil, clientCertificates: nil, colorScheme: nil, deviceScaleFactor: nil, extraHTTPHeaders: nil, forcedColors: nil, geolocation: nil, hasTouch: nil, httpCredentials: nil, ignoreHTTPSErrors: nil, isMobile: nil, javaScriptEnabled: nil, locale: nil, noViewport: nil, offline: nil, permissions: nil, proxy: nil, record_har_content: nil, record_har_mode: nil, record_har_omit_content: nil, record_har_path: nil, record_har_url_filter: nil, record_video_dir: nil, record_video_size: nil, reducedMotion: nil, screen: nil, serviceWorkers: nil, storageState: nil, strictSelectors: nil, timezoneId: nil, userAgent: nil, viewport: nil, &block) ⇒ Object

Creates a new browser context. It won’t share cookies/cache with other browser contexts.

NOTE: If directly using this method to create ‘BrowserContext`s, it is best practice to explicitly close the returned context via [`method: BrowserContext.close`] when your code is done with the `BrowserContext`, and before calling [`method: Browser.close`]. This will ensure the `context` is closed gracefully and any artifacts—like HARs and videos—are fully flushed and saved.

Usage

“‘python sync browser = playwright.firefox.launch() # or “chromium” or “webkit”. # create a new incognito browser context. context = browser.new_context() # create a new page in a pristine context. page = context.new_page() page.goto(“example.com”)

# gracefully close up everything context.close() browser.close() “‘



89
90
91
92
93
94
95
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
# File 'lib/playwright_api/browser.rb', line 89

def new_context(
      acceptDownloads: nil,
      baseURL: nil,
      bypassCSP: nil,
      clientCertificates: nil,
      colorScheme: nil,
      deviceScaleFactor: nil,
      extraHTTPHeaders: nil,
      forcedColors: nil,
      geolocation: nil,
      hasTouch: nil,
      httpCredentials: nil,
      ignoreHTTPSErrors: nil,
      isMobile: nil,
      javaScriptEnabled: nil,
      locale: nil,
      noViewport: nil,
      offline: nil,
      permissions: nil,
      proxy: nil,
      record_har_content: nil,
      record_har_mode: nil,
      record_har_omit_content: nil,
      record_har_path: nil,
      record_har_url_filter: nil,
      record_video_dir: nil,
      record_video_size: nil,
      reducedMotion: nil,
      screen: nil,
      serviceWorkers: nil,
      storageState: nil,
      strictSelectors: nil,
      timezoneId: nil,
      userAgent: nil,
      viewport: nil,
      &block)
  wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), clientCertificates: unwrap_impl(clientCertificates), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_content: unwrap_impl(record_har_content), record_har_mode: unwrap_impl(record_har_mode), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_har_url_filter: unwrap_impl(record_har_url_filter), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), serviceWorkers: unwrap_impl(serviceWorkers), storageState: unwrap_impl(storageState), strictSelectors: unwrap_impl(strictSelectors), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
end

#new_page(acceptDownloads: nil, baseURL: nil, bypassCSP: nil, clientCertificates: nil, colorScheme: nil, deviceScaleFactor: nil, extraHTTPHeaders: nil, forcedColors: nil, geolocation: nil, hasTouch: nil, httpCredentials: nil, ignoreHTTPSErrors: nil, isMobile: nil, javaScriptEnabled: nil, locale: nil, noViewport: nil, offline: nil, permissions: nil, proxy: nil, record_har_content: nil, record_har_mode: nil, record_har_omit_content: nil, record_har_path: nil, record_har_url_filter: nil, record_video_dir: nil, record_video_size: nil, reducedMotion: nil, screen: nil, serviceWorkers: nil, storageState: nil, strictSelectors: nil, timezoneId: nil, userAgent: nil, viewport: nil, &block) ⇒ Object

Creates a new page in a new browser context. Closing this page will close the context as well.

This is a convenience API that should only be used for the single-page scenarios and short snippets. Production code and testing frameworks should explicitly create [‘method: Browser.newContext`] followed by the

‘method: BrowserContext.newPage`

to control their exact life times.



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# File 'lib/playwright_api/browser.rb', line 134

def new_page(
      acceptDownloads: nil,
      baseURL: nil,
      bypassCSP: nil,
      clientCertificates: nil,
      colorScheme: nil,
      deviceScaleFactor: nil,
      extraHTTPHeaders: nil,
      forcedColors: nil,
      geolocation: nil,
      hasTouch: nil,
      httpCredentials: nil,
      ignoreHTTPSErrors: nil,
      isMobile: nil,
      javaScriptEnabled: nil,
      locale: nil,
      noViewport: nil,
      offline: nil,
      permissions: nil,
      proxy: nil,
      record_har_content: nil,
      record_har_mode: nil,
      record_har_omit_content: nil,
      record_har_path: nil,
      record_har_url_filter: nil,
      record_video_dir: nil,
      record_video_size: nil,
      reducedMotion: nil,
      screen: nil,
      serviceWorkers: nil,
      storageState: nil,
      strictSelectors: nil,
      timezoneId: nil,
      userAgent: nil,
      viewport: nil,
      &block)
  wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), clientCertificates: unwrap_impl(clientCertificates), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), forcedColors: unwrap_impl(forcedColors), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_content: unwrap_impl(record_har_content), record_har_mode: unwrap_impl(record_har_mode), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_har_url_filter: unwrap_impl(record_har_url_filter), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), serviceWorkers: unwrap_impl(serviceWorkers), storageState: unwrap_impl(storageState), strictSelectors: unwrap_impl(strictSelectors), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
end

#off(event, callback) ⇒ Object

– inherited from EventEmitter –



218
219
220
# File 'lib/playwright_api/browser.rb', line 218

def off(event, callback)
  event_emitter_proxy.off(event, callback)
end

#on(event, callback) ⇒ Object

– inherited from EventEmitter –



212
213
214
# File 'lib/playwright_api/browser.rb', line 212

def on(event, callback)
  event_emitter_proxy.on(event, callback)
end

#once(event, callback) ⇒ Object

– inherited from EventEmitter –



206
207
208
# File 'lib/playwright_api/browser.rb', line 206

def once(event, callback)
  event_emitter_proxy.once(event, callback)
end

#start_tracing(page: nil, categories: nil, path: nil, screenshots: nil) ⇒ Object

NOTE: This API controls [Chromium Tracing](www.chromium.org/developers/how-tos/trace-event-profiling-tool) which is a low-level chromium-specific debugging tool. API to control [Playwright Tracing](../trace-viewer) could be found [here](./class-tracing).

You can use [‘method: Browser.startTracing`] and [`method: Browser.stopTracing`] to create a trace file that can be opened in Chrome DevTools performance panel.

Usage

“‘python sync browser.start_tracing(page, path=“trace.json”) page.goto(“www.google.com”) browser.stop_tracing() “`



186
187
188
# File 'lib/playwright_api/browser.rb', line 186

def start_tracing(page: nil, categories: nil, path: nil, screenshots: nil)
  wrap_impl(@impl.start_tracing(page: unwrap_impl(page), categories: unwrap_impl(categories), path: unwrap_impl(path), screenshots: unwrap_impl(screenshots)))
end

#stop_tracingObject

NOTE: This API controls [Chromium Tracing](www.chromium.org/developers/how-tos/trace-event-profiling-tool) which is a low-level chromium-specific debugging tool. API to control [Playwright Tracing](../trace-viewer) could be found [here](./class-tracing).

Returns the buffer with trace data.



194
195
196
# File 'lib/playwright_api/browser.rb', line 194

def stop_tracing
  wrap_impl(@impl.stop_tracing)
end

#versionObject

Returns the browser version.



200
201
202
# File 'lib/playwright_api/browser.rb', line 200

def version
  wrap_impl(@impl.version)
end