playwright-ruby-client 0.8.0 → 1.14.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/documentation/docs/api/accessibility.md +52 -1
- data/documentation/docs/api/browser.md +8 -2
- data/documentation/docs/api/browser_context.md +28 -0
- data/documentation/docs/api/browser_type.md +1 -0
- data/documentation/docs/api/download.md +97 -0
- data/documentation/docs/api/element_handle.md +28 -3
- data/documentation/docs/api/experimental/android_device.md +1 -0
- data/documentation/docs/api/frame.md +78 -18
- data/documentation/docs/api/keyboard.md +11 -20
- data/documentation/docs/api/locator.md +650 -0
- data/documentation/docs/api/page.md +124 -20
- data/documentation/docs/api/touchscreen.md +8 -0
- data/documentation/docs/api/worker.md +37 -0
- data/documentation/docs/article/guides/inspector.md +31 -0
- data/documentation/docs/article/guides/playwright_on_alpine_linux.md +91 -0
- data/documentation/docs/article/guides/semi_automation.md +5 -1
- data/documentation/docs/include/api_coverage.md +72 -15
- data/lib/playwright.rb +0 -1
- data/lib/playwright/accessibility_impl.rb +50 -0
- data/lib/playwright/channel_owners/artifact.rb +4 -0
- data/lib/playwright/channel_owners/browser_context.rb +77 -3
- data/lib/playwright/channel_owners/frame.rb +101 -35
- data/lib/playwright/channel_owners/page.rb +157 -56
- data/lib/playwright/channel_owners/worker.rb +23 -0
- data/lib/playwright/{download.rb → download_impl.rb} +5 -1
- data/lib/playwright/javascript/expression.rb +5 -4
- data/lib/playwright/locator_impl.rb +314 -0
- data/lib/playwright/route_handler_entry.rb +3 -2
- data/lib/playwright/timeout_settings.rb +4 -4
- data/lib/playwright/touchscreen_impl.rb +7 -0
- data/lib/playwright/tracing_impl.rb +9 -8
- data/lib/playwright/url_matcher.rb +12 -2
- data/lib/playwright/version.rb +2 -2
- data/lib/playwright_api/accessibility.rb +1 -1
- data/lib/playwright_api/android.rb +6 -6
- data/lib/playwright_api/android_device.rb +8 -7
- data/lib/playwright_api/browser.rb +16 -10
- data/lib/playwright_api/browser_context.rb +16 -11
- data/lib/playwright_api/browser_type.rb +8 -7
- data/lib/playwright_api/cdp_session.rb +6 -6
- data/lib/playwright_api/console_message.rb +6 -6
- data/lib/playwright_api/dialog.rb +6 -6
- data/lib/playwright_api/download.rb +70 -0
- data/lib/playwright_api/element_handle.rb +34 -20
- data/lib/playwright_api/frame.rb +94 -52
- data/lib/playwright_api/js_handle.rb +6 -6
- data/lib/playwright_api/locator.rb +509 -0
- data/lib/playwright_api/page.rb +101 -57
- data/lib/playwright_api/playwright.rb +6 -6
- data/lib/playwright_api/request.rb +6 -6
- data/lib/playwright_api/response.rb +6 -6
- data/lib/playwright_api/route.rb +6 -11
- data/lib/playwright_api/selectors.rb +6 -6
- data/lib/playwright_api/touchscreen.rb +1 -1
- data/lib/playwright_api/web_socket.rb +6 -6
- data/lib/playwright_api/worker.rb +16 -6
- metadata +14 -6
@@ -1,19 +1,29 @@
|
|
1
1
|
module Playwright
|
2
2
|
class UrlMatcher
|
3
3
|
# @param url [String|Regexp]
|
4
|
-
|
4
|
+
# @param base_url [String|nil]
|
5
|
+
def initialize(url, base_url:)
|
5
6
|
@url = url
|
7
|
+
@base_url = base_url
|
6
8
|
end
|
7
9
|
|
8
10
|
def match?(target_url)
|
9
11
|
case @url
|
10
12
|
when String
|
11
|
-
|
13
|
+
joined_url == target_url || File.fnmatch?(@url, target_url)
|
12
14
|
when Regexp
|
13
15
|
@url.match?(target_url)
|
14
16
|
else
|
15
17
|
false
|
16
18
|
end
|
17
19
|
end
|
20
|
+
|
21
|
+
private def joined_url
|
22
|
+
if @base_url && !@url.start_with?('*')
|
23
|
+
URI.join(@base_url, @url).to_s
|
24
|
+
else
|
25
|
+
@url
|
26
|
+
end
|
27
|
+
end
|
18
28
|
end
|
19
29
|
end
|
data/lib/playwright/version.rb
CHANGED
@@ -44,7 +44,7 @@ module Playwright
|
|
44
44
|
# print(node["name"])
|
45
45
|
# ```
|
46
46
|
def snapshot(interestingOnly: nil, root: nil)
|
47
|
-
|
47
|
+
wrap_impl(@impl.snapshot(interestingOnly: unwrap_impl(interestingOnly), root: unwrap_impl(root)))
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -23,12 +23,6 @@ module Playwright
|
|
23
23
|
end
|
24
24
|
alias_method :default_timeout=, :set_default_timeout
|
25
25
|
|
26
|
-
# -- inherited from EventEmitter --
|
27
|
-
# @nodoc
|
28
|
-
def off(event, callback)
|
29
|
-
event_emitter_proxy.off(event, callback)
|
30
|
-
end
|
31
|
-
|
32
26
|
# -- inherited from EventEmitter --
|
33
27
|
# @nodoc
|
34
28
|
def once(event, callback)
|
@@ -41,6 +35,12 @@ module Playwright
|
|
41
35
|
event_emitter_proxy.on(event, callback)
|
42
36
|
end
|
43
37
|
|
38
|
+
# -- inherited from EventEmitter --
|
39
|
+
# @nodoc
|
40
|
+
def off(event, callback)
|
41
|
+
event_emitter_proxy.off(event, callback)
|
42
|
+
end
|
43
|
+
|
44
44
|
private def event_emitter_proxy
|
45
45
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
46
46
|
end
|
@@ -40,6 +40,7 @@ module Playwright
|
|
40
40
|
# Launches Chrome browser on the device, and returns its persistent context.
|
41
41
|
def launch_browser(
|
42
42
|
acceptDownloads: nil,
|
43
|
+
baseURL: nil,
|
43
44
|
bypassCSP: nil,
|
44
45
|
colorScheme: nil,
|
45
46
|
command: nil,
|
@@ -65,7 +66,7 @@ module Playwright
|
|
65
66
|
userAgent: nil,
|
66
67
|
viewport: nil,
|
67
68
|
&block)
|
68
|
-
wrap_impl(@impl.launch_browser(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), command: unwrap_impl(command), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), 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), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
69
|
+
wrap_impl(@impl.launch_browser(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), command: unwrap_impl(command), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), 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), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
69
70
|
end
|
70
71
|
|
71
72
|
# Performs a long tap on the widget defined by `selector`.
|
@@ -171,12 +172,6 @@ module Playwright
|
|
171
172
|
wrap_impl(@impl.tree)
|
172
173
|
end
|
173
174
|
|
174
|
-
# -- inherited from EventEmitter --
|
175
|
-
# @nodoc
|
176
|
-
def off(event, callback)
|
177
|
-
event_emitter_proxy.off(event, callback)
|
178
|
-
end
|
179
|
-
|
180
175
|
# -- inherited from EventEmitter --
|
181
176
|
# @nodoc
|
182
177
|
def once(event, callback)
|
@@ -189,6 +184,12 @@ module Playwright
|
|
189
184
|
event_emitter_proxy.on(event, callback)
|
190
185
|
end
|
191
186
|
|
187
|
+
# -- inherited from EventEmitter --
|
188
|
+
# @nodoc
|
189
|
+
def off(event, callback)
|
190
|
+
event_emitter_proxy.off(event, callback)
|
191
|
+
end
|
192
|
+
|
192
193
|
private def event_emitter_proxy
|
193
194
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
194
195
|
end
|
@@ -65,6 +65,7 @@ module Playwright
|
|
65
65
|
# ```
|
66
66
|
def new_context(
|
67
67
|
acceptDownloads: nil,
|
68
|
+
baseURL: nil,
|
68
69
|
bypassCSP: nil,
|
69
70
|
colorScheme: nil,
|
70
71
|
deviceScaleFactor: nil,
|
@@ -91,7 +92,7 @@ module Playwright
|
|
91
92
|
userAgent: nil,
|
92
93
|
viewport: nil,
|
93
94
|
&block)
|
94
|
-
wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), 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_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
95
|
+
wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), 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_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
95
96
|
end
|
96
97
|
|
97
98
|
# Creates a new page in a new browser context. Closing this page will close the context as well.
|
@@ -101,6 +102,7 @@ module Playwright
|
|
101
102
|
# [`method: BrowserContext.newPage`] to control their exact life times.
|
102
103
|
def new_page(
|
103
104
|
acceptDownloads: nil,
|
105
|
+
baseURL: nil,
|
104
106
|
bypassCSP: nil,
|
105
107
|
colorScheme: nil,
|
106
108
|
deviceScaleFactor: nil,
|
@@ -127,10 +129,12 @@ module Playwright
|
|
127
129
|
userAgent: nil,
|
128
130
|
viewport: nil,
|
129
131
|
&block)
|
130
|
-
wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), 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_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
132
|
+
wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), 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_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
131
133
|
end
|
132
134
|
|
133
|
-
# > NOTE:
|
135
|
+
# > NOTE: This API controls [Chromium Tracing](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool)
|
136
|
+
# which is a low-level chromium-specific debugging tool. API to control [Playwright Tracing](../trace-viewer) could be
|
137
|
+
# found [here](./class-tracing).
|
134
138
|
#
|
135
139
|
# You can use [`method: Browser.startTracing`] and [`method: Browser.stopTracing`] to create a trace file that can be
|
136
140
|
# opened in Chrome DevTools performance panel.
|
@@ -144,7 +148,9 @@ module Playwright
|
|
144
148
|
wrap_impl(@impl.start_tracing(page: unwrap_impl(page), categories: unwrap_impl(categories), path: unwrap_impl(path), screenshots: unwrap_impl(screenshots)))
|
145
149
|
end
|
146
150
|
|
147
|
-
# > NOTE:
|
151
|
+
# > NOTE: This API controls [Chromium Tracing](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool)
|
152
|
+
# which is a low-level chromium-specific debugging tool. API to control [Playwright Tracing](../trace-viewer) could be
|
153
|
+
# found [here](./class-tracing).
|
148
154
|
#
|
149
155
|
# Returns the buffer with trace data.
|
150
156
|
def stop_tracing
|
@@ -156,12 +162,6 @@ module Playwright
|
|
156
162
|
wrap_impl(@impl.version)
|
157
163
|
end
|
158
164
|
|
159
|
-
# -- inherited from EventEmitter --
|
160
|
-
# @nodoc
|
161
|
-
def off(event, callback)
|
162
|
-
event_emitter_proxy.off(event, callback)
|
163
|
-
end
|
164
|
-
|
165
165
|
# -- inherited from EventEmitter --
|
166
166
|
# @nodoc
|
167
167
|
def once(event, callback)
|
@@ -174,6 +174,12 @@ module Playwright
|
|
174
174
|
event_emitter_proxy.on(event, callback)
|
175
175
|
end
|
176
176
|
|
177
|
+
# -- inherited from EventEmitter --
|
178
|
+
# @nodoc
|
179
|
+
def off(event, callback)
|
180
|
+
event_emitter_proxy.off(event, callback)
|
181
|
+
end
|
182
|
+
|
177
183
|
private def event_emitter_proxy
|
178
184
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
179
185
|
end
|
@@ -59,7 +59,7 @@ module Playwright
|
|
59
59
|
#
|
60
60
|
# All existing background pages in the context.
|
61
61
|
def background_pages
|
62
|
-
|
62
|
+
wrap_impl(@impl.background_pages)
|
63
63
|
end
|
64
64
|
|
65
65
|
# Returns the browser instance of the context. If it was launched as a persistent context null gets returned.
|
@@ -268,7 +268,7 @@ module Playwright
|
|
268
268
|
#
|
269
269
|
# All existing service workers in the context.
|
270
270
|
def service_workers
|
271
|
-
|
271
|
+
wrap_impl(@impl.service_workers)
|
272
272
|
end
|
273
273
|
|
274
274
|
# This setting will change the default maximum navigation time for the following methods and related shortcuts:
|
@@ -325,7 +325,7 @@ module Playwright
|
|
325
325
|
|
326
326
|
# Returns storage state for this browser context, contains current cookies and local storage snapshot.
|
327
327
|
def storage_state(path: nil)
|
328
|
-
|
328
|
+
wrap_impl(@impl.storage_state(path: unwrap_impl(path)))
|
329
329
|
end
|
330
330
|
|
331
331
|
# Removes a route created with [`method: BrowserContext.route`]. When `handler` is not specified, removes all routes for
|
@@ -362,6 +362,11 @@ module Playwright
|
|
362
362
|
raise NotImplementedError.new('wait_for_event is not implemented yet.')
|
363
363
|
end
|
364
364
|
|
365
|
+
# @nodoc
|
366
|
+
def enable_debug_console!
|
367
|
+
wrap_impl(@impl.enable_debug_console!)
|
368
|
+
end
|
369
|
+
|
365
370
|
# @nodoc
|
366
371
|
def browser=(req)
|
367
372
|
wrap_impl(@impl.browser=(unwrap_impl(req)))
|
@@ -372,20 +377,14 @@ module Playwright
|
|
372
377
|
wrap_impl(@impl.owner_page=(unwrap_impl(req)))
|
373
378
|
end
|
374
379
|
|
375
|
-
# @nodoc
|
376
|
-
def options=(req)
|
377
|
-
wrap_impl(@impl.options=(unwrap_impl(req)))
|
378
|
-
end
|
379
|
-
|
380
380
|
# @nodoc
|
381
381
|
def pause
|
382
382
|
wrap_impl(@impl.pause)
|
383
383
|
end
|
384
384
|
|
385
|
-
# -- inherited from EventEmitter --
|
386
385
|
# @nodoc
|
387
|
-
def
|
388
|
-
|
386
|
+
def options=(req)
|
387
|
+
wrap_impl(@impl.options=(unwrap_impl(req)))
|
389
388
|
end
|
390
389
|
|
391
390
|
# -- inherited from EventEmitter --
|
@@ -400,6 +399,12 @@ module Playwright
|
|
400
399
|
event_emitter_proxy.on(event, callback)
|
401
400
|
end
|
402
401
|
|
402
|
+
# -- inherited from EventEmitter --
|
403
|
+
# @nodoc
|
404
|
+
def off(event, callback)
|
405
|
+
event_emitter_proxy.off(event, callback)
|
406
|
+
end
|
407
|
+
|
403
408
|
private def event_emitter_proxy
|
404
409
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
405
410
|
end
|
@@ -96,6 +96,7 @@ module Playwright
|
|
96
96
|
userDataDir,
|
97
97
|
acceptDownloads: nil,
|
98
98
|
args: nil,
|
99
|
+
baseURL: nil,
|
99
100
|
bypassCSP: nil,
|
100
101
|
channel: nil,
|
101
102
|
chromiumSandbox: nil,
|
@@ -135,7 +136,7 @@ module Playwright
|
|
135
136
|
userAgent: nil,
|
136
137
|
viewport: nil,
|
137
138
|
&block)
|
138
|
-
wrap_impl(@impl.launch_persistent_context(unwrap_impl(userDataDir), acceptDownloads: unwrap_impl(acceptDownloads), args: unwrap_impl(args), bypassCSP: unwrap_impl(bypassCSP), channel: unwrap_impl(channel), chromiumSandbox: unwrap_impl(chromiumSandbox), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), devtools: unwrap_impl(devtools), downloadsPath: unwrap_impl(downloadsPath), env: unwrap_impl(env), executablePath: unwrap_impl(executablePath), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), handleSIGHUP: unwrap_impl(handleSIGHUP), handleSIGINT: unwrap_impl(handleSIGINT), handleSIGTERM: unwrap_impl(handleSIGTERM), hasTouch: unwrap_impl(hasTouch), headless: unwrap_impl(headless), httpCredentials: unwrap_impl(httpCredentials), ignoreDefaultArgs: unwrap_impl(ignoreDefaultArgs), 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_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), slowMo: unwrap_impl(slowMo), timeout: unwrap_impl(timeout), timezoneId: unwrap_impl(timezoneId), tracesDir: unwrap_impl(tracesDir), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
139
|
+
wrap_impl(@impl.launch_persistent_context(unwrap_impl(userDataDir), acceptDownloads: unwrap_impl(acceptDownloads), args: unwrap_impl(args), baseURL: unwrap_impl(baseURL), bypassCSP: unwrap_impl(bypassCSP), channel: unwrap_impl(channel), chromiumSandbox: unwrap_impl(chromiumSandbox), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), devtools: unwrap_impl(devtools), downloadsPath: unwrap_impl(downloadsPath), env: unwrap_impl(env), executablePath: unwrap_impl(executablePath), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), handleSIGHUP: unwrap_impl(handleSIGHUP), handleSIGINT: unwrap_impl(handleSIGINT), handleSIGTERM: unwrap_impl(handleSIGTERM), hasTouch: unwrap_impl(hasTouch), headless: unwrap_impl(headless), httpCredentials: unwrap_impl(httpCredentials), ignoreDefaultArgs: unwrap_impl(ignoreDefaultArgs), 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_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), slowMo: unwrap_impl(slowMo), timeout: unwrap_impl(timeout), timezoneId: unwrap_impl(timezoneId), tracesDir: unwrap_impl(tracesDir), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
139
140
|
end
|
140
141
|
|
141
142
|
# Returns browser name. For example: `'chromium'`, `'webkit'` or `'firefox'`.
|
@@ -143,12 +144,6 @@ module Playwright
|
|
143
144
|
wrap_impl(@impl.name)
|
144
145
|
end
|
145
146
|
|
146
|
-
# -- inherited from EventEmitter --
|
147
|
-
# @nodoc
|
148
|
-
def off(event, callback)
|
149
|
-
event_emitter_proxy.off(event, callback)
|
150
|
-
end
|
151
|
-
|
152
147
|
# -- inherited from EventEmitter --
|
153
148
|
# @nodoc
|
154
149
|
def once(event, callback)
|
@@ -161,6 +156,12 @@ module Playwright
|
|
161
156
|
event_emitter_proxy.on(event, callback)
|
162
157
|
end
|
163
158
|
|
159
|
+
# -- inherited from EventEmitter --
|
160
|
+
# @nodoc
|
161
|
+
def off(event, callback)
|
162
|
+
event_emitter_proxy.off(event, callback)
|
163
|
+
end
|
164
|
+
|
164
165
|
private def event_emitter_proxy
|
165
166
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
166
167
|
end
|
@@ -33,12 +33,6 @@ module Playwright
|
|
33
33
|
wrap_impl(@impl.send_message(unwrap_impl(method), params: unwrap_impl(params)))
|
34
34
|
end
|
35
35
|
|
36
|
-
# -- inherited from EventEmitter --
|
37
|
-
# @nodoc
|
38
|
-
def off(event, callback)
|
39
|
-
event_emitter_proxy.off(event, callback)
|
40
|
-
end
|
41
|
-
|
42
36
|
# -- inherited from EventEmitter --
|
43
37
|
# @nodoc
|
44
38
|
def once(event, callback)
|
@@ -51,6 +45,12 @@ module Playwright
|
|
51
45
|
event_emitter_proxy.on(event, callback)
|
52
46
|
end
|
53
47
|
|
48
|
+
# -- inherited from EventEmitter --
|
49
|
+
# @nodoc
|
50
|
+
def off(event, callback)
|
51
|
+
event_emitter_proxy.off(event, callback)
|
52
|
+
end
|
53
|
+
|
54
54
|
private def event_emitter_proxy
|
55
55
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
56
56
|
end
|
@@ -23,12 +23,6 @@ module Playwright
|
|
23
23
|
wrap_impl(@impl.type)
|
24
24
|
end
|
25
25
|
|
26
|
-
# -- inherited from EventEmitter --
|
27
|
-
# @nodoc
|
28
|
-
def off(event, callback)
|
29
|
-
event_emitter_proxy.off(event, callback)
|
30
|
-
end
|
31
|
-
|
32
26
|
# -- inherited from EventEmitter --
|
33
27
|
# @nodoc
|
34
28
|
def once(event, callback)
|
@@ -41,6 +35,12 @@ module Playwright
|
|
41
35
|
event_emitter_proxy.on(event, callback)
|
42
36
|
end
|
43
37
|
|
38
|
+
# -- inherited from EventEmitter --
|
39
|
+
# @nodoc
|
40
|
+
def off(event, callback)
|
41
|
+
event_emitter_proxy.off(event, callback)
|
42
|
+
end
|
43
|
+
|
44
44
|
private def event_emitter_proxy
|
45
45
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
46
46
|
end
|
@@ -58,12 +58,6 @@ module Playwright
|
|
58
58
|
wrap_impl(@impl.accept_async(promptText: unwrap_impl(promptText)))
|
59
59
|
end
|
60
60
|
|
61
|
-
# -- inherited from EventEmitter --
|
62
|
-
# @nodoc
|
63
|
-
def off(event, callback)
|
64
|
-
event_emitter_proxy.off(event, callback)
|
65
|
-
end
|
66
|
-
|
67
61
|
# -- inherited from EventEmitter --
|
68
62
|
# @nodoc
|
69
63
|
def once(event, callback)
|
@@ -76,6 +70,12 @@ module Playwright
|
|
76
70
|
event_emitter_proxy.on(event, callback)
|
77
71
|
end
|
78
72
|
|
73
|
+
# -- inherited from EventEmitter --
|
74
|
+
# @nodoc
|
75
|
+
def off(event, callback)
|
76
|
+
event_emitter_proxy.off(event, callback)
|
77
|
+
end
|
78
|
+
|
79
79
|
private def event_emitter_proxy
|
80
80
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
81
81
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module Playwright
|
2
|
+
# `Download` objects are dispatched by page via the [`event: Page.download`] event.
|
3
|
+
#
|
4
|
+
# All the downloaded files belonging to the browser context are deleted when the browser context is closed.
|
5
|
+
#
|
6
|
+
# Download event is emitted once the download starts. Download path becomes available once download completes:
|
7
|
+
#
|
8
|
+
# ```python sync
|
9
|
+
# with page.expect_download() as download_info:
|
10
|
+
# page.click("a")
|
11
|
+
# download = download_info.value
|
12
|
+
# # wait for download to complete
|
13
|
+
# path = download.path()
|
14
|
+
# ```
|
15
|
+
#
|
16
|
+
# > NOTE: Browser context **must** be created with the `acceptDownloads` set to `true` when user needs access to the
|
17
|
+
# downloaded content. If `acceptDownloads` is not set, download events are emitted, but the actual download is not
|
18
|
+
# performed and user has no access to the downloaded files.
|
19
|
+
class Download < PlaywrightApi
|
20
|
+
|
21
|
+
# Cancels a download. Will not fail if the download is already finished or canceled. Upon successful cancellations,
|
22
|
+
# `download.failure()` would resolve to `'canceled'`.
|
23
|
+
def cancel
|
24
|
+
wrap_impl(@impl.cancel)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Deletes the downloaded file. Will wait for the download to finish if necessary.
|
28
|
+
def delete
|
29
|
+
wrap_impl(@impl.delete)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns download error if any. Will wait for the download to finish if necessary.
|
33
|
+
def failure
|
34
|
+
wrap_impl(@impl.failure)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Get the page that the download belongs to.
|
38
|
+
def page
|
39
|
+
wrap_impl(@impl.page)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Returns path to the downloaded file in case of successful download. The method will wait for the download to finish if
|
43
|
+
# necessary. The method throws when connected remotely.
|
44
|
+
#
|
45
|
+
# Note that the download's file name is a random GUID, use [`method: Download.suggestedFilename`] to get suggested file
|
46
|
+
# name.
|
47
|
+
def path
|
48
|
+
wrap_impl(@impl.path)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Copy the download to a user-specified path. It is safe to call this method while the download is still in progress. Will
|
52
|
+
# wait for the download to finish if necessary.
|
53
|
+
def save_as(path)
|
54
|
+
wrap_impl(@impl.save_as(unwrap_impl(path)))
|
55
|
+
end
|
56
|
+
|
57
|
+
# Returns suggested filename for this download. It is typically computed by the browser from the
|
58
|
+
# [`Content-Disposition`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) response header
|
59
|
+
# or the `download` attribute. See the spec on [whatwg](https://html.spec.whatwg.org/#downloading-resources). Different
|
60
|
+
# browsers can use different logic for computing it.
|
61
|
+
def suggested_filename
|
62
|
+
wrap_impl(@impl.suggested_filename)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Returns downloaded url.
|
66
|
+
def url
|
67
|
+
wrap_impl(@impl.url)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|