playwright-ruby-client 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/docs/api_coverage.md +15 -7
- data/lib/playwright/channel_owner.rb +3 -5
- data/lib/playwright/channel_owners/android.rb +1 -1
- data/lib/playwright/channel_owners/android_device.rb +11 -11
- data/lib/playwright/channel_owners/browser.rb +1 -1
- data/lib/playwright/channel_owners/browser_context.rb +1 -1
- data/lib/playwright/channel_owners/element_handle.rb +13 -2
- data/lib/playwright/channel_owners/frame.rb +15 -3
- data/lib/playwright/channel_owners/js_handle.rb +1 -1
- data/lib/playwright/channel_owners/page.rb +33 -28
- data/lib/playwright/channel_owners/request.rb +1 -1
- data/lib/playwright/select_option_values.rb +14 -4
- data/lib/playwright/utils.rb +2 -2
- data/lib/playwright/version.rb +1 -1
- data/lib/playwright_api/android.rb +0 -5
- data/lib/playwright_api/android_device.rb +2 -7
- data/lib/playwright_api/browser.rb +12 -19
- data/lib/playwright_api/browser_context.rb +41 -10
- data/lib/playwright_api/browser_type.rb +6 -50
- data/lib/playwright_api/download.rb +0 -5
- data/lib/playwright_api/element_handle.rb +8 -2
- data/lib/playwright_api/frame.rb +9 -7
- data/lib/playwright_api/js_handle.rb +0 -5
- data/lib/playwright_api/page.rb +79 -18
- data/lib/playwright_api/playwright.rb +22 -43
- data/lib/playwright_api/request.rb +8 -10
- data/lib/playwright_api/response.rb +7 -0
- data/lib/playwright_api/route.rb +0 -1
- data/lib/playwright_api/selectors.rb +1 -1
- data/lib/playwright_api/web_socket.rb +15 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eecde37d8ee0ad9fdb1f0df5a64a5a646f2706915a24a2a2d83a8f176bcc8519
|
4
|
+
data.tar.gz: cb97a5926b3a25c8c3b2fe8c88946747ec89d3d579f71d36350c7cf2839c83e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e1bb8eee779773afd9e3b165a03f3c91bb25ae076ae00d6d1603e34afe8eaf3876f847559841c68403588a79b766f3e4afe680f7056286c64ba16ce5be149bc
|
7
|
+
data.tar.gz: e55e7895a26b5a579cae82101cd9ae0bf3cebd4f9ecc0c18692b4a18fa5a7e649b4121d9ac5c6029101131cdd56c59af64ba8b65d6c325cfbe7ffe56c8ee632c
|
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
[](https://badge.fury.io/rb/playwright-ruby-client)
|
2
2
|
|
3
|
-
#
|
4
|
-
|
5
|
-
A Ruby client for Playwright driver.
|
3
|
+
# 🎭 Playwright client for Ruby
|
6
4
|
|
7
5
|
Note: Currently, this Gem is just a PoC (Proof of Concept). If you want to develop browser-automation for Chrome with Ruby, consider using [puppeteer-ruby](https://github.com/YusukeIwaki/puppeteer-ruby). The list of the available APIs of playwright-ruby-client is [here](./docs/api_coverage.md)
|
8
6
|
|
@@ -17,6 +15,8 @@ npm install playwright
|
|
17
15
|
|
18
16
|
and then, set `playwright_cli_executable_path: ./node_modules/.bin/playwright` at `Playwright.create`.
|
19
17
|
|
18
|
+
**Prefer playwrighting without Node.js?**
|
19
|
+
|
20
20
|
Instead of npm install, you can also directly download playwright driver from playwright.azureedge.net/builds/. The URL can be easily detected from [here](https://github.com/microsoft/playwright-python/blob/79f6ce0a6a69c480573372706df84af5ef99c4a4/setup.py#L56-L61)
|
21
21
|
|
22
22
|
### Capture a site
|
data/docs/api_coverage.md
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
* method
|
10
10
|
* post_data
|
11
11
|
* post_data_buffer
|
12
|
+
* post_data_json
|
12
13
|
* redirected_from
|
13
14
|
* redirected_to
|
14
15
|
* resource_type
|
@@ -22,6 +23,7 @@
|
|
22
23
|
* ~~finished~~
|
23
24
|
* ~~frame~~
|
24
25
|
* ~~headers~~
|
26
|
+
* ~~json~~
|
25
27
|
* ~~ok~~
|
26
28
|
* ~~request~~
|
27
29
|
* ~~status~~
|
@@ -40,6 +42,8 @@
|
|
40
42
|
|
41
43
|
* ~~closed?~~
|
42
44
|
* ~~url~~
|
45
|
+
* ~~expect_event~~
|
46
|
+
* ~~wait_for_event~~
|
43
47
|
|
44
48
|
## Keyboard
|
45
49
|
|
@@ -197,7 +201,6 @@
|
|
197
201
|
|
198
202
|
## Download
|
199
203
|
|
200
|
-
* ~~create_read_stream~~
|
201
204
|
* delete
|
202
205
|
* failure
|
203
206
|
* path
|
@@ -273,6 +276,7 @@
|
|
273
276
|
* url
|
274
277
|
* ~~video~~
|
275
278
|
* viewport_size
|
279
|
+
* expect_event
|
276
280
|
* wait_for_function
|
277
281
|
* wait_for_load_state
|
278
282
|
* expect_navigation
|
@@ -281,8 +285,13 @@
|
|
281
285
|
* wait_for_selector
|
282
286
|
* ~~wait_for_timeout~~
|
283
287
|
* ~~workers~~
|
288
|
+
* ~~expect_download~~
|
289
|
+
* ~~expect_popup~~
|
290
|
+
* ~~expect_worker~~
|
291
|
+
* ~~expect_console_message~~
|
292
|
+
* ~~expect_file_chooser~~
|
293
|
+
* ~~wait_for_event~~
|
284
294
|
* accessibility
|
285
|
-
* ~~coverage~~
|
286
295
|
* keyboard
|
287
296
|
* mouse
|
288
297
|
* touchscreen
|
@@ -306,10 +315,12 @@
|
|
306
315
|
* ~~set_default_timeout~~
|
307
316
|
* ~~set_extra_http_headers~~
|
308
317
|
* ~~set_geolocation~~
|
309
|
-
* ~~set_http_credentials~~
|
310
318
|
* ~~set_offline~~
|
311
319
|
* ~~storage_state~~
|
312
320
|
* ~~unroute~~
|
321
|
+
* ~~expect_event~~
|
322
|
+
* ~~expect_page~~
|
323
|
+
* ~~wait_for_event~~
|
313
324
|
|
314
325
|
## ~~CDPSession~~
|
315
326
|
|
@@ -333,19 +344,16 @@
|
|
333
344
|
|
334
345
|
## BrowserType
|
335
346
|
|
336
|
-
* ~~connect~~
|
337
347
|
* executable_path
|
338
348
|
* launch
|
339
349
|
* ~~launch_persistent_context~~
|
340
|
-
* ~~launch_server~~
|
341
350
|
* name
|
342
351
|
|
343
352
|
## Playwright
|
344
353
|
|
345
|
-
* ~~
|
354
|
+
* ~~stop~~
|
346
355
|
* chromium
|
347
356
|
* devices
|
348
|
-
* ~~errors~~
|
349
357
|
* firefox
|
350
358
|
* ~~selectors~~
|
351
359
|
* webkit
|
@@ -59,16 +59,14 @@ module Playwright
|
|
59
59
|
"#<#{@guid}>"
|
60
60
|
end
|
61
61
|
|
62
|
-
private
|
63
|
-
|
64
|
-
def after_initialize
|
62
|
+
private def after_initialize
|
65
63
|
end
|
66
64
|
|
67
|
-
def update_object_from_child(guid, child)
|
65
|
+
private def update_object_from_child(guid, child)
|
68
66
|
@objects[guid] = child
|
69
67
|
end
|
70
68
|
|
71
|
-
def delete_object_from_child(guid)
|
69
|
+
private def delete_object_from_child(guid)
|
72
70
|
@objects.delete(guid)
|
73
71
|
end
|
74
72
|
end
|
@@ -2,7 +2,7 @@ module Playwright
|
|
2
2
|
define_channel_owner :AndroidDevice do
|
3
3
|
include Utils::PrepareBrowserContextOptions
|
4
4
|
|
5
|
-
def after_initialize
|
5
|
+
private def after_initialize
|
6
6
|
@input = AndroidInputImpl.new(@channel)
|
7
7
|
end
|
8
8
|
|
@@ -104,17 +104,17 @@ module Playwright
|
|
104
104
|
isMobile: nil,
|
105
105
|
javaScriptEnabled: nil,
|
106
106
|
locale: nil,
|
107
|
-
|
107
|
+
noViewport: nil,
|
108
108
|
offline: nil,
|
109
109
|
permissions: nil,
|
110
110
|
proxy: nil,
|
111
|
-
|
112
|
-
|
111
|
+
record_har_omit_content: nil,
|
112
|
+
record_har_path: nil,
|
113
|
+
record_video_dir: nil,
|
114
|
+
record_video_size: nil,
|
113
115
|
storageState: nil,
|
114
116
|
timezoneId: nil,
|
115
117
|
userAgent: nil,
|
116
|
-
videoSize: nil,
|
117
|
-
videosPath: nil,
|
118
118
|
viewport: nil,
|
119
119
|
&block)
|
120
120
|
params = {
|
@@ -131,17 +131,17 @@ module Playwright
|
|
131
131
|
isMobile: isMobile,
|
132
132
|
javaScriptEnabled: javaScriptEnabled,
|
133
133
|
locale: locale,
|
134
|
-
|
134
|
+
noViewport: noViewport,
|
135
135
|
offline: offline,
|
136
136
|
permissions: permissions,
|
137
137
|
proxy: proxy,
|
138
|
-
|
139
|
-
|
138
|
+
record_har_omit_content: record_har_omit_content,
|
139
|
+
record_har_path: record_har_path,
|
140
|
+
record_video_dir: record_video_dir,
|
141
|
+
record_video_size: record_video_size,
|
140
142
|
storageState: storageState,
|
141
143
|
timezoneId: timezoneId,
|
142
144
|
userAgent: userAgent,
|
143
|
-
videoSize: videoSize,
|
144
|
-
videosPath: videosPath,
|
145
145
|
viewport: viewport,
|
146
146
|
}.compact
|
147
147
|
prepare_browser_context_options(params)
|
@@ -136,8 +136,19 @@ module Playwright
|
|
136
136
|
nil
|
137
137
|
end
|
138
138
|
|
139
|
-
def select_option(
|
140
|
-
|
139
|
+
def select_option(
|
140
|
+
element: nil,
|
141
|
+
index: nil,
|
142
|
+
value: nil,
|
143
|
+
label: nil,
|
144
|
+
noWaitAfter: nil,
|
145
|
+
timeout: nil)
|
146
|
+
base_params = SelectOptionValues.new(
|
147
|
+
element: element,
|
148
|
+
index: index,
|
149
|
+
value: value,
|
150
|
+
label: label,
|
151
|
+
).as_params
|
141
152
|
params = base_params + { noWaitAfter: noWaitAfter, timeout: timeout }.compact
|
142
153
|
@channel.send_message_to_server('selectOption', params)
|
143
154
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Playwright
|
2
2
|
# @ref https://github.com/microsoft/playwright-python/blob/master/playwright/_impl/_frame.py
|
3
3
|
define_channel_owner :Frame do
|
4
|
-
def after_initialize
|
4
|
+
private def after_initialize
|
5
5
|
if @initializer['parentFrame']
|
6
6
|
@parent_frame = ChannelOwners::Frame.from(@initializer['parentFrame'])
|
7
7
|
@parent_frame.send(:append_child_frame_from_child, self)
|
@@ -398,8 +398,20 @@ module Playwright
|
|
398
398
|
nil
|
399
399
|
end
|
400
400
|
|
401
|
-
def select_option(
|
402
|
-
|
401
|
+
def select_option(
|
402
|
+
selector,
|
403
|
+
element: nil,
|
404
|
+
index: nil,
|
405
|
+
value: nil,
|
406
|
+
label: nil,
|
407
|
+
noWaitAfter: nil,
|
408
|
+
timeout: nil)
|
409
|
+
base_params = SelectOptionValues.new(
|
410
|
+
element: element,
|
411
|
+
index: index,
|
412
|
+
value: value,
|
413
|
+
label: label,
|
414
|
+
).as_params
|
403
415
|
params = base_params + { selector: selector, noWaitAfter: noWaitAfter, timeout: timeout }.compact
|
404
416
|
@channel.send_message_to_server('selectOption', params)
|
405
417
|
|
@@ -6,7 +6,7 @@ module Playwright
|
|
6
6
|
include Utils::Errors::SafeCloseError
|
7
7
|
attr_writer :owned_context
|
8
8
|
|
9
|
-
def after_initialize
|
9
|
+
private def after_initialize
|
10
10
|
@browser_context = @parent
|
11
11
|
@timeout_settings = TimeoutSettings.new(@browser_context.send(:_timeout_settings))
|
12
12
|
@accessibility = Accessibility.new(@channel)
|
@@ -167,14 +167,7 @@ module Playwright
|
|
167
167
|
ChannelOwners::Page.from(resp)
|
168
168
|
end
|
169
169
|
|
170
|
-
def frame(
|
171
|
-
name, url =
|
172
|
-
if frameSelector.is_a?(Hash)
|
173
|
-
[frameSelector[:name], frameSelector[:url]]
|
174
|
-
else
|
175
|
-
[frameSelector, nil]
|
176
|
-
end
|
177
|
-
|
170
|
+
def frame(name: nil, url: nil)
|
178
171
|
if name
|
179
172
|
@frames.find { |f| f.name == name }
|
180
173
|
elsif url
|
@@ -351,9 +344,17 @@ module Playwright
|
|
351
344
|
nil
|
352
345
|
end
|
353
346
|
|
354
|
-
def add_init_script(
|
347
|
+
def add_init_script(path: nil, script: nil)
|
348
|
+
source =
|
349
|
+
if path
|
350
|
+
File.read(path, 'r')
|
351
|
+
elsif script
|
352
|
+
script
|
353
|
+
else
|
354
|
+
raise ArgumentError.new('Either path or script parameter must be specified')
|
355
|
+
end
|
356
|
+
|
355
357
|
@channel.send_message_to_server('addInitScript', source: script)
|
356
|
-
# FIXME: handling `arg` for function `script`
|
357
358
|
nil
|
358
359
|
end
|
359
360
|
|
@@ -502,8 +503,23 @@ module Playwright
|
|
502
503
|
)
|
503
504
|
end
|
504
505
|
|
505
|
-
def select_option(
|
506
|
-
|
506
|
+
def select_option(
|
507
|
+
selector,
|
508
|
+
element: nil,
|
509
|
+
index: nil,
|
510
|
+
value: nil,
|
511
|
+
label: nil,
|
512
|
+
noWaitAfter: nil,
|
513
|
+
timeout: nil)
|
514
|
+
@main_frame.select_option(
|
515
|
+
selector,
|
516
|
+
element: element,
|
517
|
+
index: index,
|
518
|
+
value: value,
|
519
|
+
label: label,
|
520
|
+
noWaitAfter: noWaitAfter,
|
521
|
+
timeout: timeout,
|
522
|
+
)
|
507
523
|
end
|
508
524
|
|
509
525
|
def set_input_files(selector, files, noWaitAfter: nil, timeout: nil)
|
@@ -599,20 +615,9 @@ module Playwright
|
|
599
615
|
end
|
600
616
|
end
|
601
617
|
|
602
|
-
def expect_event(event,
|
603
|
-
predicate, timeout =
|
604
|
-
case optionsOrPredicate
|
605
|
-
when Proc
|
606
|
-
[optionsOrPredicate, nil]
|
607
|
-
when Hash
|
608
|
-
[optionsOrPredicate[:predicate], optionsOrPredicate[:timeout]]
|
609
|
-
else
|
610
|
-
[nil, nil]
|
611
|
-
end
|
612
|
-
timeout ||= @timeout_settings.timeout
|
613
|
-
|
618
|
+
def expect_event(event, predicate: nil, timeout: nil, &block)
|
614
619
|
wait_helper = WaitHelper.new
|
615
|
-
wait_helper.reject_on_timeout(timeout, "Timeout while waiting for event \"#{event}\"")
|
620
|
+
wait_helper.reject_on_timeout(timeout || @timeout_settings.timeout, "Timeout while waiting for event \"#{event}\"")
|
616
621
|
|
617
622
|
unless event == Events::Page::Crash
|
618
623
|
wait_helper.reject_on_event(self, Events::Page::Crash, CrashedError.new)
|
@@ -649,7 +654,7 @@ module Playwright
|
|
649
654
|
-> (_) { true }
|
650
655
|
end
|
651
656
|
|
652
|
-
expect_event(Events::Page::Request,
|
657
|
+
expect_event(Events::Page::Request, predicate: predicate, timeout: timeout)
|
653
658
|
end
|
654
659
|
|
655
660
|
def expect_response(urlOrPredicate, timeout: nil)
|
@@ -664,7 +669,7 @@ module Playwright
|
|
664
669
|
-> (_) { true }
|
665
670
|
end
|
666
671
|
|
667
|
-
expect_event(Events::Page::Response,
|
672
|
+
expect_event(Events::Page::Response, predicate: predicate, timeout: timeout)
|
668
673
|
end
|
669
674
|
|
670
675
|
# called from BrowserContext#on_page with send(:update_browser_context, page), so keep private.
|
@@ -3,7 +3,7 @@ require 'base64'
|
|
3
3
|
module Playwright
|
4
4
|
# @ref https://github.com/microsoft/playwright-python/blob/master/playwright/_impl/_network.py
|
5
5
|
define_channel_owner :Request do
|
6
|
-
def after_initialize
|
6
|
+
private def after_initialize
|
7
7
|
@redirected_from = ChannelOwners::Request.from_nullable(@initializer['redirectedFrom'])
|
8
8
|
@redirected_from&.send(:update_redirected_to, self)
|
9
9
|
@timing = {
|
@@ -1,7 +1,18 @@
|
|
1
1
|
module Playwright
|
2
2
|
class SelectOptionValues
|
3
|
-
def initialize(
|
4
|
-
@params =
|
3
|
+
def initialize(element: nil, index: nil, value: nil, label: nil)
|
4
|
+
@params =
|
5
|
+
if element
|
6
|
+
convert(elmeent)
|
7
|
+
elsif index
|
8
|
+
convert(index)
|
9
|
+
elsif value
|
10
|
+
convert(value)
|
11
|
+
elsif label
|
12
|
+
convert(label)
|
13
|
+
else
|
14
|
+
{}
|
15
|
+
end
|
5
16
|
end
|
6
17
|
|
7
18
|
# @return [Hash]
|
@@ -10,8 +21,7 @@ module Playwright
|
|
10
21
|
end
|
11
22
|
|
12
23
|
private def convert(values)
|
13
|
-
return
|
14
|
-
return convert([values]) unless values.is_a?('Array')
|
24
|
+
return convert([values]) unless values.is_a?(Enumerable)
|
15
25
|
return {} if values.empty?
|
16
26
|
values.each_with_index do |value, index|
|
17
27
|
unless values
|
data/lib/playwright/utils.rb
CHANGED
@@ -3,8 +3,8 @@ module Playwright
|
|
3
3
|
module PrepareBrowserContextOptions
|
4
4
|
# @see https://github.com/microsoft/playwright/blob/5a2cfdbd47ed3c3deff77bb73e5fac34241f649d/src/client/browserContext.ts#L265
|
5
5
|
private def prepare_browser_context_options(params)
|
6
|
-
if params[:
|
7
|
-
params.delete(:
|
6
|
+
if params[:noViewport] == 0
|
7
|
+
params.delete(:noViewport)
|
8
8
|
params[:noDefaultViewport] = true
|
9
9
|
end
|
10
10
|
if params[:extraHTTPHeaders]
|
data/lib/playwright/version.rb
CHANGED
@@ -12,11 +12,6 @@ module Playwright
|
|
12
12
|
wrap_impl(@impl.close)
|
13
13
|
end
|
14
14
|
|
15
|
-
# @nodoc
|
16
|
-
def after_initialize
|
17
|
-
wrap_impl(@impl.after_initialize)
|
18
|
-
end
|
19
|
-
|
20
15
|
# @nodoc
|
21
16
|
def tap_on(selector, duration: nil, timeout: nil)
|
22
17
|
wrap_impl(@impl.tap_on(unwrap_impl(selector), duration: unwrap_impl(duration), timeout: unwrap_impl(timeout)))
|
@@ -38,8 +33,8 @@ module Playwright
|
|
38
33
|
end
|
39
34
|
|
40
35
|
# @nodoc
|
41
|
-
def launch_browser(pkg: nil, acceptDownloads: nil, bypassCSP: nil, colorScheme: nil, deviceScaleFactor: nil, extraHTTPHeaders: nil, geolocation: nil, hasTouch: nil, httpCredentials: nil, ignoreHTTPSErrors: nil, isMobile: nil, javaScriptEnabled: nil, locale: nil,
|
42
|
-
wrap_impl(@impl.launch_browser(pkg: unwrap_impl(pkg), 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),
|
36
|
+
def launch_browser(pkg: nil, acceptDownloads: nil, bypassCSP: nil, colorScheme: nil, deviceScaleFactor: nil, extraHTTPHeaders: 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_omit_content: nil, record_har_path: nil, record_video_dir: nil, record_video_size: nil, storageState: nil, timezoneId: nil, userAgent: nil, viewport: nil, &block)
|
37
|
+
wrap_impl(@impl.launch_browser(pkg: unwrap_impl(pkg), 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), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
43
38
|
end
|
44
39
|
|
45
40
|
# @nodoc
|
@@ -135,21 +135,20 @@ module Playwright
|
|
135
135
|
isMobile: nil,
|
136
136
|
javaScriptEnabled: nil,
|
137
137
|
locale: nil,
|
138
|
-
|
138
|
+
noViewport: nil,
|
139
139
|
offline: nil,
|
140
140
|
permissions: nil,
|
141
141
|
proxy: nil,
|
142
|
-
|
143
|
-
|
142
|
+
record_har_omit_content: nil,
|
143
|
+
record_har_path: nil,
|
144
|
+
record_video_dir: nil,
|
145
|
+
record_video_size: nil,
|
144
146
|
storageState: nil,
|
145
|
-
storageStatePath: nil,
|
146
147
|
timezoneId: nil,
|
147
148
|
userAgent: nil,
|
148
|
-
videoSize: nil,
|
149
|
-
videosPath: nil,
|
150
149
|
viewport: nil,
|
151
150
|
&block)
|
152
|
-
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),
|
151
|
+
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), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
|
153
152
|
end
|
154
153
|
|
155
154
|
# Creates a new page in a new browser context. Closing this page will close the context as well.
|
@@ -170,20 +169,19 @@ module Playwright
|
|
170
169
|
isMobile: nil,
|
171
170
|
javaScriptEnabled: nil,
|
172
171
|
locale: nil,
|
173
|
-
|
172
|
+
noViewport: nil,
|
174
173
|
offline: nil,
|
175
174
|
permissions: nil,
|
176
175
|
proxy: nil,
|
177
|
-
|
178
|
-
|
176
|
+
record_har_omit_content: nil,
|
177
|
+
record_har_path: nil,
|
178
|
+
record_video_dir: nil,
|
179
|
+
record_video_size: nil,
|
179
180
|
storageState: nil,
|
180
|
-
storageStatePath: nil,
|
181
181
|
timezoneId: nil,
|
182
182
|
userAgent: nil,
|
183
|
-
videoSize: nil,
|
184
|
-
videosPath: nil,
|
185
183
|
viewport: nil)
|
186
|
-
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),
|
184
|
+
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), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport)))
|
187
185
|
end
|
188
186
|
|
189
187
|
# Returns the browser version.
|
@@ -191,11 +189,6 @@ module Playwright
|
|
191
189
|
wrap_impl(@impl.version)
|
192
190
|
end
|
193
191
|
|
194
|
-
# @nodoc
|
195
|
-
def after_initialize
|
196
|
-
wrap_impl(@impl.after_initialize)
|
197
|
-
end
|
198
|
-
|
199
192
|
# -- inherited from EventEmitter --
|
200
193
|
# @nodoc
|
201
194
|
def once(event, callback)
|
@@ -96,7 +96,7 @@ module Playwright
|
|
96
96
|
#
|
97
97
|
# > NOTE: The order of evaluation of multiple scripts installed via [`method: BrowserContext.addInitScript`] and
|
98
98
|
# [`method: Page.addInitScript`] is not defined.
|
99
|
-
def add_init_script(
|
99
|
+
def add_init_script(path: nil, script: nil)
|
100
100
|
raise NotImplementedError.new('add_init_script is not implemented yet.')
|
101
101
|
end
|
102
102
|
|
@@ -523,12 +523,6 @@ module Playwright
|
|
523
523
|
end
|
524
524
|
alias_method :geolocation=, :set_geolocation
|
525
525
|
|
526
|
-
# **DEPRECATED** Browsers may cache credentials after successful authentication. Create a new browser context instead.
|
527
|
-
def set_http_credentials(httpCredentials)
|
528
|
-
raise NotImplementedError.new('set_http_credentials is not implemented yet.')
|
529
|
-
end
|
530
|
-
alias_method :http_credentials=, :set_http_credentials
|
531
|
-
|
532
526
|
def set_offline(offline)
|
533
527
|
raise NotImplementedError.new('set_offline is not implemented yet.')
|
534
528
|
end
|
@@ -545,9 +539,46 @@ module Playwright
|
|
545
539
|
raise NotImplementedError.new('unroute is not implemented yet.')
|
546
540
|
end
|
547
541
|
|
548
|
-
#
|
549
|
-
|
550
|
-
|
542
|
+
# Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy
|
543
|
+
# value. Will throw an error if the context closes before the event is fired. Returns the event data value.
|
544
|
+
#
|
545
|
+
#
|
546
|
+
# ```js
|
547
|
+
# const [page, _] = await Promise.all([
|
548
|
+
# context.waitForEvent('page'),
|
549
|
+
# page.click('button')
|
550
|
+
# ]);
|
551
|
+
# ```
|
552
|
+
#
|
553
|
+
# ```python async
|
554
|
+
# async with context.expect_event("page") as event_info:
|
555
|
+
# await page.click("button")
|
556
|
+
# page = await event_info.value
|
557
|
+
# ```
|
558
|
+
#
|
559
|
+
# ```python sync
|
560
|
+
# with context.expect_event("page") as event_info:
|
561
|
+
# page.click("button")
|
562
|
+
# page = event_info.value
|
563
|
+
# ```
|
564
|
+
def expect_event(event, predicate: nil, timeout: nil)
|
565
|
+
raise NotImplementedError.new('expect_event is not implemented yet.')
|
566
|
+
end
|
567
|
+
|
568
|
+
# Performs action and waits for `page` event to fire. If predicate is provided, it passes `Page` value into the
|
569
|
+
# `predicate` function and waits for `predicate(event)` to return a truthy value. Will throw an error if the page is
|
570
|
+
# closed before the worker event is fired.
|
571
|
+
def expect_page(predicate: nil, timeout: nil)
|
572
|
+
raise NotImplementedError.new('expect_page is not implemented yet.')
|
573
|
+
end
|
574
|
+
|
575
|
+
# > NOTE: In most cases, you should use [`method: BrowserContext.waitForEvent`].
|
576
|
+
#
|
577
|
+
# Waits for given `event` to fire. If predicate is provided, it passes event's value into the `predicate` function and
|
578
|
+
# waits for `predicate(event)` to return a truthy value. Will throw an error if the socket is closed before the `event` is
|
579
|
+
# fired.
|
580
|
+
def wait_for_event(event, predicate: nil, timeout: nil)
|
581
|
+
raise NotImplementedError.new('wait_for_event is not implemented yet.')
|
551
582
|
end
|
552
583
|
|
553
584
|
# @nodoc
|
@@ -49,11 +49,6 @@ module Playwright
|
|
49
49
|
# ```
|
50
50
|
class BrowserType < PlaywrightApi
|
51
51
|
|
52
|
-
# This methods attaches Playwright to an existing browser instance.
|
53
|
-
def connect(params)
|
54
|
-
raise NotImplementedError.new('connect is not implemented yet.')
|
55
|
-
end
|
56
|
-
|
57
52
|
# A path where Playwright expects to find a bundled browser executable.
|
58
53
|
def executable_path
|
59
54
|
wrap_impl(@impl.executable_path)
|
@@ -108,14 +103,12 @@ module Playwright
|
|
108
103
|
handleSIGINT: nil,
|
109
104
|
handleSIGTERM: nil,
|
110
105
|
headless: nil,
|
111
|
-
ignoreAllDefaultArgs: nil,
|
112
106
|
ignoreDefaultArgs: nil,
|
113
|
-
logger: nil,
|
114
107
|
proxy: nil,
|
115
108
|
slowMo: nil,
|
116
109
|
timeout: nil,
|
117
110
|
&block)
|
118
|
-
wrap_impl(@impl.launch(args: unwrap_impl(args), chromiumSandbox: unwrap_impl(chromiumSandbox), devtools: unwrap_impl(devtools), downloadsPath: unwrap_impl(downloadsPath), env: unwrap_impl(env), executablePath: unwrap_impl(executablePath), firefoxUserPrefs: unwrap_impl(firefoxUserPrefs), handleSIGHUP: unwrap_impl(handleSIGHUP), handleSIGINT: unwrap_impl(handleSIGINT), handleSIGTERM: unwrap_impl(handleSIGTERM), headless: unwrap_impl(headless),
|
111
|
+
wrap_impl(@impl.launch(args: unwrap_impl(args), chromiumSandbox: unwrap_impl(chromiumSandbox), devtools: unwrap_impl(devtools), downloadsPath: unwrap_impl(downloadsPath), env: unwrap_impl(env), executablePath: unwrap_impl(executablePath), firefoxUserPrefs: unwrap_impl(firefoxUserPrefs), handleSIGHUP: unwrap_impl(handleSIGHUP), handleSIGINT: unwrap_impl(handleSIGINT), handleSIGTERM: unwrap_impl(handleSIGTERM), headless: unwrap_impl(headless), ignoreDefaultArgs: unwrap_impl(ignoreDefaultArgs), proxy: unwrap_impl(proxy), slowMo: unwrap_impl(slowMo), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
|
119
112
|
end
|
120
113
|
|
121
114
|
# Returns the persistent browser context instance.
|
@@ -142,64 +135,27 @@ module Playwright
|
|
142
135
|
hasTouch: nil,
|
143
136
|
headless: nil,
|
144
137
|
httpCredentials: nil,
|
145
|
-
ignoreAllDefaultArgs: nil,
|
146
138
|
ignoreDefaultArgs: nil,
|
147
139
|
ignoreHTTPSErrors: nil,
|
148
140
|
isMobile: nil,
|
149
141
|
javaScriptEnabled: nil,
|
150
142
|
locale: nil,
|
151
|
-
|
143
|
+
noViewport: nil,
|
152
144
|
offline: nil,
|
153
145
|
permissions: nil,
|
154
146
|
proxy: nil,
|
155
|
-
|
156
|
-
|
147
|
+
record_har_omit_content: nil,
|
148
|
+
record_har_path: nil,
|
149
|
+
record_video_dir: nil,
|
150
|
+
record_video_size: nil,
|
157
151
|
slowMo: nil,
|
158
152
|
timeout: nil,
|
159
153
|
timezoneId: nil,
|
160
154
|
userAgent: nil,
|
161
|
-
videoSize: nil,
|
162
|
-
videosPath: nil,
|
163
155
|
viewport: nil)
|
164
156
|
raise NotImplementedError.new('launch_persistent_context is not implemented yet.')
|
165
157
|
end
|
166
158
|
|
167
|
-
# Returns the browser app instance.
|
168
|
-
#
|
169
|
-
# Launches browser server that client can connect to. An example of launching a browser executable and connecting to it
|
170
|
-
# later:
|
171
|
-
#
|
172
|
-
#
|
173
|
-
# ```js
|
174
|
-
# const { chromium } = require('playwright'); // Or 'webkit' or 'firefox'.
|
175
|
-
#
|
176
|
-
# (async () => {
|
177
|
-
# const browserServer = await chromium.launchServer();
|
178
|
-
# const wsEndpoint = browserServer.wsEndpoint();
|
179
|
-
# // Use web socket endpoint later to establish a connection.
|
180
|
-
# const browser = await chromium.connect({ wsEndpoint });
|
181
|
-
# // Close browser instance.
|
182
|
-
# await browserServer.close();
|
183
|
-
# })();
|
184
|
-
# ```
|
185
|
-
def launch_server(
|
186
|
-
args: nil,
|
187
|
-
chromiumSandbox: nil,
|
188
|
-
devtools: nil,
|
189
|
-
downloadsPath: nil,
|
190
|
-
executablePath: nil,
|
191
|
-
firefoxUserPrefs: nil,
|
192
|
-
handleSIGHUP: nil,
|
193
|
-
handleSIGINT: nil,
|
194
|
-
handleSIGTERM: nil,
|
195
|
-
headless: nil,
|
196
|
-
logger: nil,
|
197
|
-
port: nil,
|
198
|
-
proxy: nil,
|
199
|
-
timeout: nil)
|
200
|
-
raise NotImplementedError.new('launch_server is not implemented yet.')
|
201
|
-
end
|
202
|
-
|
203
159
|
# Returns browser name. For example: `'chromium'`, `'webkit'` or `'firefox'`.
|
204
160
|
def name
|
205
161
|
wrap_impl(@impl.name)
|
@@ -37,11 +37,6 @@ module Playwright
|
|
37
37
|
# performed and user has no access to the downloaded files.
|
38
38
|
class Download < PlaywrightApi
|
39
39
|
|
40
|
-
# Returns readable stream for current download or `null` if download failed.
|
41
|
-
def create_read_stream
|
42
|
-
raise NotImplementedError.new('create_read_stream is not implemented yet.')
|
43
|
-
end
|
44
|
-
|
45
40
|
# Deletes the downloaded file.
|
46
41
|
def delete
|
47
42
|
wrap_impl(@impl.delete)
|
@@ -467,8 +467,14 @@ module Playwright
|
|
467
467
|
# # multiple selection for blue, red and second option
|
468
468
|
# handle.select_option(value="blue", { index: 2 }, "red")
|
469
469
|
# ```
|
470
|
-
def select_option(
|
471
|
-
|
470
|
+
def select_option(
|
471
|
+
element: nil,
|
472
|
+
index: nil,
|
473
|
+
value: nil,
|
474
|
+
label: nil,
|
475
|
+
noWaitAfter: nil,
|
476
|
+
timeout: nil)
|
477
|
+
wrap_impl(@impl.select_option(element: unwrap_impl(element), index: unwrap_impl(index), value: unwrap_impl(value), label: unwrap_impl(label), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
|
472
478
|
end
|
473
479
|
|
474
480
|
# This method waits for [actionability](./actionability.md) checks, then focuses the element and selects all its text
|
data/lib/playwright_api/frame.rb
CHANGED
@@ -645,8 +645,15 @@ module Playwright
|
|
645
645
|
# # multiple selection
|
646
646
|
# frame.select_option("select#colors", value=["red", "green", "blue"])
|
647
647
|
# ```
|
648
|
-
def select_option(
|
649
|
-
|
648
|
+
def select_option(
|
649
|
+
selector,
|
650
|
+
element: nil,
|
651
|
+
index: nil,
|
652
|
+
value: nil,
|
653
|
+
label: nil,
|
654
|
+
noWaitAfter: nil,
|
655
|
+
timeout: nil)
|
656
|
+
wrap_impl(@impl.select_option(unwrap_impl(selector), element: unwrap_impl(element), index: unwrap_impl(index), value: unwrap_impl(value), label: unwrap_impl(label), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
|
650
657
|
end
|
651
658
|
|
652
659
|
def set_content(html, timeout: nil, waitUntil: nil)
|
@@ -953,11 +960,6 @@ module Playwright
|
|
953
960
|
wrap_impl(@impl.detached=(unwrap_impl(req)))
|
954
961
|
end
|
955
962
|
|
956
|
-
# @nodoc
|
957
|
-
def after_initialize
|
958
|
-
wrap_impl(@impl.after_initialize)
|
959
|
-
end
|
960
|
-
|
961
963
|
# -- inherited from EventEmitter --
|
962
964
|
# @nodoc
|
963
965
|
def once(event, callback)
|
data/lib/playwright_api/page.rb
CHANGED
@@ -96,12 +96,6 @@ module Playwright
|
|
96
96
|
wrap_impl(@impl.accessibility)
|
97
97
|
end
|
98
98
|
|
99
|
-
# Browser-specific Coverage implementation, only available for Chromium atm. See
|
100
|
-
# `ChromiumCoverage`(#class-chromiumcoverage) for more details.
|
101
|
-
def coverage # property
|
102
|
-
raise NotImplementedError.new('coverage is not implemented yet.')
|
103
|
-
end
|
104
|
-
|
105
99
|
def keyboard # property
|
106
100
|
wrap_impl(@impl.keyboard)
|
107
101
|
end
|
@@ -148,8 +142,8 @@ module Playwright
|
|
148
142
|
#
|
149
143
|
# > NOTE: The order of evaluation of multiple scripts installed via [`method: BrowserContext.addInitScript`] and
|
150
144
|
# [`method: Page.addInitScript`] is not defined.
|
151
|
-
def add_init_script(
|
152
|
-
wrap_impl(@impl.add_init_script(unwrap_impl(
|
145
|
+
def add_init_script(path: nil, script: nil)
|
146
|
+
wrap_impl(@impl.add_init_script(path: unwrap_impl(path), script: unwrap_impl(script)))
|
153
147
|
end
|
154
148
|
|
155
149
|
# Adds a `<script>` tag into the page with the desired url or content. Returns the added tag when the script's onload
|
@@ -880,8 +874,8 @@ module Playwright
|
|
880
874
|
# ```py
|
881
875
|
# frame = page.frame(url=r".*domain.*")
|
882
876
|
# ```
|
883
|
-
def frame(
|
884
|
-
wrap_impl(@impl.frame(unwrap_impl(
|
877
|
+
def frame(name: nil, url: nil)
|
878
|
+
wrap_impl(@impl.frame(name: unwrap_impl(name), url: unwrap_impl(url)))
|
885
879
|
end
|
886
880
|
|
887
881
|
# An array of all frames attached to the page.
|
@@ -1299,8 +1293,15 @@ module Playwright
|
|
1299
1293
|
# ```
|
1300
1294
|
#
|
1301
1295
|
# Shortcut for main frame's [`method: Frame.selectOption`]
|
1302
|
-
def select_option(
|
1303
|
-
|
1296
|
+
def select_option(
|
1297
|
+
selector,
|
1298
|
+
element: nil,
|
1299
|
+
index: nil,
|
1300
|
+
value: nil,
|
1301
|
+
label: nil,
|
1302
|
+
noWaitAfter: nil,
|
1303
|
+
timeout: nil)
|
1304
|
+
wrap_impl(@impl.select_option(unwrap_impl(selector), element: unwrap_impl(element), index: unwrap_impl(index), value: unwrap_impl(value), label: unwrap_impl(label), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
|
1304
1305
|
end
|
1305
1306
|
|
1306
1307
|
def set_content(html, timeout: nil, waitUntil: nil)
|
@@ -1483,6 +1484,32 @@ module Playwright
|
|
1483
1484
|
wrap_impl(@impl.viewport_size)
|
1484
1485
|
end
|
1485
1486
|
|
1487
|
+
# Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy
|
1488
|
+
# value. Will throw an error if the page is closed before the event is fired. Returns the event data value.
|
1489
|
+
#
|
1490
|
+
#
|
1491
|
+
# ```js
|
1492
|
+
# const [frame, _] = await Promise.all([
|
1493
|
+
# page.waitForEvent('framenavigated'),
|
1494
|
+
# page.click('button')
|
1495
|
+
# ]);
|
1496
|
+
# ```
|
1497
|
+
#
|
1498
|
+
# ```python async
|
1499
|
+
# async with page.expect_event("framenavigated") as event_info:
|
1500
|
+
# await page.click("button")
|
1501
|
+
# frame = await event_info.value
|
1502
|
+
# ```
|
1503
|
+
#
|
1504
|
+
# ```python sync
|
1505
|
+
# with page.expect_event("framenavigated") as event_info:
|
1506
|
+
# page.click("button")
|
1507
|
+
# frame = event_info.value
|
1508
|
+
# ```
|
1509
|
+
def expect_event(event, predicate: nil, timeout: nil, &block)
|
1510
|
+
wrap_impl(@impl.expect_event(unwrap_impl(event), predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
|
1511
|
+
end
|
1512
|
+
|
1486
1513
|
# Returns when the `expression` returns a truthy value. It resolves to a JSHandle of the truthy value.
|
1487
1514
|
#
|
1488
1515
|
# The [`method: Page.waitForFunction`] can be used to observe viewport size change:
|
@@ -1807,14 +1834,48 @@ module Playwright
|
|
1807
1834
|
raise NotImplementedError.new('workers is not implemented yet.')
|
1808
1835
|
end
|
1809
1836
|
|
1810
|
-
#
|
1811
|
-
|
1812
|
-
|
1837
|
+
# Performs action and waits for `download` event to fire. If predicate is provided, it passes `Download` value into the
|
1838
|
+
# `predicate` function and waits for `predicate(event)` to return a truthy value. Will throw an error if the page is
|
1839
|
+
# closed before the download event is fired.
|
1840
|
+
def expect_download(predicate: nil, timeout: nil)
|
1841
|
+
raise NotImplementedError.new('expect_download is not implemented yet.')
|
1813
1842
|
end
|
1814
1843
|
|
1815
|
-
#
|
1816
|
-
|
1817
|
-
|
1844
|
+
# Performs action and waits for `popup` event to fire. If predicate is provided, it passes [Popup] value into the
|
1845
|
+
# `predicate` function and waits for `predicate(event)` to return a truthy value. Will throw an error if the page is
|
1846
|
+
# closed before the popup event is fired.
|
1847
|
+
def expect_popup(predicate: nil, timeout: nil)
|
1848
|
+
raise NotImplementedError.new('expect_popup is not implemented yet.')
|
1849
|
+
end
|
1850
|
+
|
1851
|
+
# Performs action and waits for `worker` event to fire. If predicate is provided, it passes `Worker` value into the
|
1852
|
+
# `predicate` function and waits for `predicate(event)` to return a truthy value. Will throw an error if the page is
|
1853
|
+
# closed before the worker event is fired.
|
1854
|
+
def expect_worker(predicate: nil, timeout: nil)
|
1855
|
+
raise NotImplementedError.new('expect_worker is not implemented yet.')
|
1856
|
+
end
|
1857
|
+
|
1858
|
+
# Performs action and waits for `console` event to fire. If predicate is provided, it passes `ConsoleMessage` value into
|
1859
|
+
# the `predicate` function and waits for `predicate(event)` to return a truthy value. Will throw an error if the page is
|
1860
|
+
# closed before the worker event is fired.
|
1861
|
+
def expect_console_message(predicate: nil, timeout: nil)
|
1862
|
+
raise NotImplementedError.new('expect_console_message is not implemented yet.')
|
1863
|
+
end
|
1864
|
+
|
1865
|
+
# Performs action and waits for `filechooser` event to fire. If predicate is provided, it passes `FileChooser` value into
|
1866
|
+
# the `predicate` function and waits for `predicate(event)` to return a truthy value. Will throw an error if the page is
|
1867
|
+
# closed before the worker event is fired.
|
1868
|
+
def expect_file_chooser(predicate: nil, timeout: nil)
|
1869
|
+
raise NotImplementedError.new('expect_file_chooser is not implemented yet.')
|
1870
|
+
end
|
1871
|
+
|
1872
|
+
# > NOTE: In most cases, you should use [`method: Page.waitForEvent`].
|
1873
|
+
#
|
1874
|
+
# Waits for given `event` to fire. If predicate is provided, it passes event's value into the `predicate` function and
|
1875
|
+
# waits for `predicate(event)` to return a truthy value. Will throw an error if the socket is closed before the `event` is
|
1876
|
+
# fired.
|
1877
|
+
def wait_for_event(event, predicate: nil, timeout: nil)
|
1878
|
+
raise NotImplementedError.new('wait_for_event is not implemented yet.')
|
1818
1879
|
end
|
1819
1880
|
|
1820
1881
|
# @nodoc
|
@@ -113,42 +113,6 @@ module Playwright
|
|
113
113
|
wrap_impl(@impl.devices)
|
114
114
|
end
|
115
115
|
|
116
|
-
# Playwright methods might throw errors if they are unable to fulfill a request. For example,
|
117
|
-
# [`method: Page.waitForSelector`] might fail if the selector doesn't match any nodes during the given timeframe.
|
118
|
-
#
|
119
|
-
# For certain types of errors Playwright uses specific error classes. These classes are available via
|
120
|
-
# [`playwright.errors`](#playwrighterrors).
|
121
|
-
#
|
122
|
-
# An example of handling a timeout error:
|
123
|
-
#
|
124
|
-
#
|
125
|
-
# ```js
|
126
|
-
# try {
|
127
|
-
# await page.waitForSelector('.foo');
|
128
|
-
# } catch (e) {
|
129
|
-
# if (e instanceof playwright.errors.TimeoutError) {
|
130
|
-
# // Do something if this is a timeout.
|
131
|
-
# }
|
132
|
-
# }
|
133
|
-
# ```
|
134
|
-
#
|
135
|
-
# ```python async
|
136
|
-
# try:
|
137
|
-
# await page.wait_for_selector(".foo")
|
138
|
-
# except TimeoutError as e:
|
139
|
-
# # do something if this is a timeout.
|
140
|
-
# ```
|
141
|
-
#
|
142
|
-
# ```python sync
|
143
|
-
# try:
|
144
|
-
# page.wait_for_selector(".foo")
|
145
|
-
# except TimeoutError as e:
|
146
|
-
# # do something if this is a timeout.
|
147
|
-
# ```
|
148
|
-
def errors # property
|
149
|
-
raise NotImplementedError.new('errors is not implemented yet.')
|
150
|
-
end
|
151
|
-
|
152
116
|
# This object can be used to launch or connect to Firefox, returning instances of `FirefoxBrowser`.
|
153
117
|
def firefox # property
|
154
118
|
wrap_impl(@impl.firefox)
|
@@ -165,19 +129,34 @@ module Playwright
|
|
165
129
|
wrap_impl(@impl.webkit)
|
166
130
|
end
|
167
131
|
|
168
|
-
# Terminates this instance of Playwright
|
169
|
-
|
170
|
-
|
132
|
+
# Terminates this instance of Playwright in case it was created bypassing the Python context manager. This is useful in
|
133
|
+
# REPL applications.
|
134
|
+
#
|
135
|
+
# ```py
|
136
|
+
# >>> from playwright.sync_api import sync_playwright
|
137
|
+
#
|
138
|
+
# >>> playwright = sync_playwright().start()
|
139
|
+
#
|
140
|
+
# >>> browser = playwright.chromium.launch()
|
141
|
+
# >>> page = browser.new_page()
|
142
|
+
# >>> page.goto("http://whatsmyuseragent.org/")
|
143
|
+
# >>> page.screenshot(path="example.png")
|
144
|
+
# >>> browser.close()
|
145
|
+
#
|
146
|
+
# >>> playwright.stop()
|
147
|
+
# ```
|
148
|
+
def stop
|
149
|
+
raise NotImplementedError.new('stop is not implemented yet.')
|
171
150
|
end
|
172
151
|
|
173
152
|
# @nodoc
|
174
|
-
def
|
175
|
-
wrap_impl(@impl.
|
153
|
+
def android
|
154
|
+
wrap_impl(@impl.android)
|
176
155
|
end
|
177
156
|
|
178
157
|
# @nodoc
|
179
|
-
def
|
180
|
-
wrap_impl(@impl.
|
158
|
+
def electron
|
159
|
+
wrap_impl(@impl.electron)
|
181
160
|
end
|
182
161
|
|
183
162
|
# -- inherited from EventEmitter --
|
@@ -62,6 +62,14 @@ module Playwright
|
|
62
62
|
wrap_impl(@impl.post_data_buffer)
|
63
63
|
end
|
64
64
|
|
65
|
+
# Returns parsed request's body for `form-urlencoded` and JSON as a fallback if any.
|
66
|
+
#
|
67
|
+
# When the response is `application/x-www-form-urlencoded` then a key/value object of the values will be returned.
|
68
|
+
# Otherwise it will be parsed as JSON.
|
69
|
+
def post_data_json
|
70
|
+
wrap_impl(@impl.post_data_json)
|
71
|
+
end
|
72
|
+
|
65
73
|
# Request that was redirected by the server to this one, if any.
|
66
74
|
#
|
67
75
|
# When the server responds with a redirect, Playwright creates a new `Request` object. The two requests are connected by
|
@@ -170,16 +178,6 @@ module Playwright
|
|
170
178
|
wrap_impl(@impl.url)
|
171
179
|
end
|
172
180
|
|
173
|
-
# @nodoc
|
174
|
-
def post_data_json
|
175
|
-
wrap_impl(@impl.post_data_json)
|
176
|
-
end
|
177
|
-
|
178
|
-
# @nodoc
|
179
|
-
def after_initialize
|
180
|
-
wrap_impl(@impl.after_initialize)
|
181
|
-
end
|
182
|
-
|
183
181
|
# -- inherited from EventEmitter --
|
184
182
|
# @nodoc
|
185
183
|
def once(event, callback)
|
@@ -22,6 +22,13 @@ module Playwright
|
|
22
22
|
raise NotImplementedError.new('headers is not implemented yet.')
|
23
23
|
end
|
24
24
|
|
25
|
+
# Returns the JSON representation of response body.
|
26
|
+
#
|
27
|
+
# This method will throw if the response body is not parsable via `JSON.parse`.
|
28
|
+
def json
|
29
|
+
raise NotImplementedError.new('json is not implemented yet.')
|
30
|
+
end
|
31
|
+
|
25
32
|
# Contains a boolean stating whether the response was successful (status in the range 200-299) or not.
|
26
33
|
def ok
|
27
34
|
raise NotImplementedError.new('ok is not implemented yet.')
|
data/lib/playwright_api/route.rb
CHANGED
@@ -48,7 +48,7 @@ module Playwright
|
|
48
48
|
# ```python sync
|
49
49
|
# # FIXME: add snippet
|
50
50
|
# ```
|
51
|
-
def register(name,
|
51
|
+
def register(name, contentScript: nil, path: nil, script: nil)
|
52
52
|
raise NotImplementedError.new('register is not implemented yet.')
|
53
53
|
end
|
54
54
|
|
@@ -11,5 +11,20 @@ module Playwright
|
|
11
11
|
def url
|
12
12
|
raise NotImplementedError.new('url is not implemented yet.')
|
13
13
|
end
|
14
|
+
|
15
|
+
# Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy
|
16
|
+
# value. Will throw an error if the webSocket is closed before the event is fired. Returns the event data value.
|
17
|
+
def expect_event(event, predicate: nil, timeout: nil)
|
18
|
+
raise NotImplementedError.new('expect_event is not implemented yet.')
|
19
|
+
end
|
20
|
+
|
21
|
+
# > NOTE: In most cases, you should use [`method: WebSocket.waitForEvent`].
|
22
|
+
#
|
23
|
+
# Waits for given `event` to fire. If predicate is provided, it passes event's value into the `predicate` function and
|
24
|
+
# waits for `predicate(event)` to return a truthy value. Will throw an error if the socket is closed before the `event` is
|
25
|
+
# fired.
|
26
|
+
def wait_for_event(event, predicate: nil, timeout: nil)
|
27
|
+
raise NotImplementedError.new('wait_for_event is not implemented yet.')
|
28
|
+
end
|
14
29
|
end
|
15
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playwright-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YusukeIwaki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|