playwright-ruby-client 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/docs/api_coverage.md +42 -45
- data/lib/playwright.rb +1 -0
- data/lib/playwright/channel_owners/browser_context.rb +9 -1
- data/lib/playwright/channel_owners/frame.rb +7 -0
- data/lib/playwright/channel_owners/page.rb +250 -0
- data/lib/playwright/channel_owners/request.rb +8 -0
- data/lib/playwright/event_emitter.rb +4 -1
- data/lib/playwright/http_headers.rb +20 -0
- data/lib/playwright/utils.rb +1 -1
- data/lib/playwright/version.rb +1 -1
- data/lib/playwright_api/android.rb +4 -4
- data/lib/playwright_api/android_device.rb +5 -5
- data/lib/playwright_api/android_input.rb +4 -4
- data/lib/playwright_api/browser.rb +5 -3
- data/lib/playwright_api/browser_context.rb +3 -29
- data/lib/playwright_api/browser_type.rb +3 -3
- data/lib/playwright_api/chromium_browser_context.rb +0 -2
- data/lib/playwright_api/dialog.rb +5 -1
- data/lib/playwright_api/element_handle.rb +89 -88
- data/lib/playwright_api/file_chooser.rb +13 -5
- data/lib/playwright_api/frame.rb +99 -100
- data/lib/playwright_api/js_handle.rb +11 -12
- data/lib/playwright_api/page.rb +140 -149
- data/lib/playwright_api/playwright.rb +10 -5
- data/lib/playwright_api/request.rb +5 -8
- data/lib/playwright_api/response.rb +0 -7
- data/lib/playwright_api/route.rb +1 -0
- data/lib/playwright_api/selectors.rb +2 -2
- data/lib/playwright_api/web_socket.rb +0 -6
- data/lib/playwright_api/worker.rb +13 -13
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eccb7fbb7a1fba3116ceaa61893b164850dc7f21eb45cac637da161bc137120a
|
4
|
+
data.tar.gz: ceeab7bc64c7a743ef3b682dda05271ff49eb3727ad7b47ed722f527aedacba0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1414afc026223b47750708cd2f30dab6453aebb5b3ce06f97a7f4a51c793f6b2b57ef307ffc0b31df2f91158d7d7e40623f443846b1653ca8778b7a67bfe7a47
|
7
|
+
data.tar.gz: 33cf15f92e23a118264627067f534d4379876090b6a3bf74fb8c67253e2905b575495c548247144f82ed282b8b86a1c891e89ffdf8e51423202bd38ce03a5bb2
|
data/docs/api_coverage.md
CHANGED
@@ -9,7 +9,6 @@
|
|
9
9
|
* method
|
10
10
|
* post_data
|
11
11
|
* post_data_buffer
|
12
|
-
* post_data_json
|
13
12
|
* redirected_from
|
14
13
|
* redirected_to
|
15
14
|
* resource_type
|
@@ -23,7 +22,6 @@
|
|
23
22
|
* ~~finished~~
|
24
23
|
* ~~frame~~
|
25
24
|
* ~~headers~~
|
26
|
-
* ~~json~~
|
27
25
|
* ~~ok~~
|
28
26
|
* ~~request~~
|
29
27
|
* ~~status~~
|
@@ -42,7 +40,6 @@
|
|
42
40
|
|
43
41
|
* ~~closed?~~
|
44
42
|
* ~~url~~
|
45
|
-
* ~~expect_event~~
|
46
43
|
|
47
44
|
## Keyboard
|
48
45
|
|
@@ -76,16 +73,14 @@
|
|
76
73
|
|
77
74
|
## ElementHandle
|
78
75
|
|
79
|
-
* query_selector
|
80
|
-
* query_selector_all
|
81
|
-
* eval_on_selector
|
82
|
-
* eval_on_selector_all
|
83
76
|
* bounding_box
|
84
77
|
* check
|
85
78
|
* click
|
86
79
|
* content_frame
|
87
80
|
* dblclick
|
88
81
|
* dispatch_event
|
82
|
+
* eval_on_selector
|
83
|
+
* eval_on_selector_all
|
89
84
|
* fill
|
90
85
|
* focus
|
91
86
|
* get_attribute
|
@@ -100,6 +95,8 @@
|
|
100
95
|
* visible?
|
101
96
|
* owner_frame
|
102
97
|
* press
|
98
|
+
* query_selector
|
99
|
+
* query_selector_all
|
103
100
|
* screenshot
|
104
101
|
* scroll_into_view_if_needed
|
105
102
|
* select_option
|
@@ -125,10 +122,6 @@
|
|
125
122
|
|
126
123
|
## Frame
|
127
124
|
|
128
|
-
* query_selector
|
129
|
-
* query_selector_all
|
130
|
-
* eval_on_selector
|
131
|
-
* eval_on_selector_all
|
132
125
|
* add_script_tag
|
133
126
|
* add_style_tag
|
134
127
|
* check
|
@@ -137,6 +130,8 @@
|
|
137
130
|
* content
|
138
131
|
* dblclick
|
139
132
|
* dispatch_event
|
133
|
+
* eval_on_selector
|
134
|
+
* eval_on_selector_all
|
140
135
|
* evaluate
|
141
136
|
* evaluate_handle
|
142
137
|
* fill
|
@@ -158,6 +153,8 @@
|
|
158
153
|
* page
|
159
154
|
* parent_frame
|
160
155
|
* press
|
156
|
+
* query_selector
|
157
|
+
* query_selector_all
|
161
158
|
* select_option
|
162
159
|
* set_content
|
163
160
|
* set_input_files
|
@@ -170,7 +167,7 @@
|
|
170
167
|
* wait_for_function
|
171
168
|
* wait_for_load_state
|
172
169
|
* expect_navigation
|
173
|
-
*
|
170
|
+
* wait_for_selector
|
174
171
|
* ~~wait_for_timeout~~
|
175
172
|
|
176
173
|
## ~~Worker~~
|
@@ -214,74 +211,74 @@
|
|
214
211
|
|
215
212
|
## Page
|
216
213
|
|
217
|
-
*
|
218
|
-
* query_selector_all
|
219
|
-
* eval_on_selector
|
220
|
-
* eval_on_selector_all
|
221
|
-
* ~~add_init_script~~
|
214
|
+
* add_init_script
|
222
215
|
* add_script_tag
|
223
216
|
* add_style_tag
|
224
|
-
*
|
225
|
-
*
|
217
|
+
* bring_to_front
|
218
|
+
* check
|
226
219
|
* click
|
227
220
|
* close
|
228
221
|
* content
|
229
222
|
* context
|
230
223
|
* dblclick
|
231
|
-
*
|
232
|
-
*
|
224
|
+
* dispatch_event
|
225
|
+
* emulate_media
|
226
|
+
* eval_on_selector
|
227
|
+
* eval_on_selector_all
|
233
228
|
* evaluate
|
234
229
|
* evaluate_handle
|
235
|
-
*
|
236
|
-
*
|
230
|
+
* expose_binding
|
231
|
+
* expose_function
|
237
232
|
* fill
|
238
233
|
* focus
|
239
234
|
* frame
|
240
235
|
* frames
|
241
|
-
*
|
242
|
-
*
|
243
|
-
*
|
236
|
+
* get_attribute
|
237
|
+
* go_back
|
238
|
+
* go_forward
|
244
239
|
* goto
|
245
|
-
*
|
246
|
-
*
|
247
|
-
*
|
248
|
-
*
|
240
|
+
* hover
|
241
|
+
* inner_html
|
242
|
+
* inner_text
|
243
|
+
* checked?
|
249
244
|
* closed?
|
250
|
-
*
|
251
|
-
*
|
252
|
-
*
|
253
|
-
*
|
254
|
-
*
|
245
|
+
* disabled?
|
246
|
+
* editable?
|
247
|
+
* enabled?
|
248
|
+
* hidden?
|
249
|
+
* visible?
|
255
250
|
* main_frame
|
256
251
|
* opener
|
257
|
-
* ~~
|
252
|
+
* ~~pause~~
|
253
|
+
* pdf
|
258
254
|
* press
|
255
|
+
* query_selector
|
256
|
+
* query_selector_all
|
259
257
|
* reload
|
260
258
|
* ~~route~~
|
261
259
|
* screenshot
|
262
|
-
*
|
260
|
+
* select_option
|
263
261
|
* set_content
|
264
262
|
* set_default_navigation_timeout
|
265
263
|
* set_default_timeout
|
266
|
-
*
|
267
|
-
*
|
264
|
+
* set_extra_http_headers
|
265
|
+
* set_input_files
|
268
266
|
* set_viewport_size
|
269
|
-
*
|
270
|
-
*
|
267
|
+
* tap_point
|
268
|
+
* text_content
|
271
269
|
* title
|
272
270
|
* type
|
273
|
-
*
|
271
|
+
* uncheck
|
274
272
|
* ~~unroute~~
|
275
273
|
* url
|
276
274
|
* ~~video~~
|
277
275
|
* viewport_size
|
278
|
-
* expect_event
|
279
276
|
* wait_for_function
|
280
277
|
* wait_for_load_state
|
281
278
|
* expect_navigation
|
282
279
|
* expect_request
|
283
280
|
* expect_response
|
284
|
-
*
|
281
|
+
* wait_for_selector
|
285
282
|
* ~~wait_for_timeout~~
|
286
283
|
* ~~workers~~
|
287
284
|
* accessibility
|
@@ -313,7 +310,6 @@
|
|
313
310
|
* ~~set_offline~~
|
314
311
|
* ~~storage_state~~
|
315
312
|
* ~~unroute~~
|
316
|
-
* ~~expect_event~~
|
317
313
|
|
318
314
|
## ~~CDPSession~~
|
319
315
|
|
@@ -346,6 +342,7 @@
|
|
346
342
|
|
347
343
|
## Playwright
|
348
344
|
|
345
|
+
* ~~close~~
|
349
346
|
* chromium
|
350
347
|
* devices
|
351
348
|
* ~~errors~~
|
data/lib/playwright.rb
CHANGED
@@ -8,7 +8,10 @@ module Playwright
|
|
8
8
|
@pages = Set.new
|
9
9
|
|
10
10
|
@channel.once('close', ->(_) { on_close })
|
11
|
-
@channel.on('page', ->(
|
11
|
+
@channel.on('page', ->(params) { on_page(ChannelOwners::Page.from(params['page']) )})
|
12
|
+
@channel.on('route', ->(params) {
|
13
|
+
on_route(ChannelOwners::Route.from(params['route']), ChannelOwners::Request.from(params['request']))
|
14
|
+
})
|
12
15
|
end
|
13
16
|
|
14
17
|
private def on_page(page)
|
@@ -17,6 +20,11 @@ module Playwright
|
|
17
20
|
emit(Events::BrowserContext::Page, page)
|
18
21
|
end
|
19
22
|
|
23
|
+
private def on_route(route, request)
|
24
|
+
# @routes.each ...
|
25
|
+
route.continue_
|
26
|
+
end
|
27
|
+
|
20
28
|
def pages
|
21
29
|
@pages.to_a
|
22
30
|
end
|
@@ -144,6 +144,13 @@ module Playwright
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
|
+
def wait_for_selector(selector, state: nil, timeout: nil)
|
148
|
+
params = { selector: selector, state: state, timeout: timeout }.compact
|
149
|
+
resp = @channel.send_message_to_server('waitForSelector', params)
|
150
|
+
|
151
|
+
ChannelOwners::ElementHandle.from_nullable(resp)
|
152
|
+
end
|
153
|
+
|
147
154
|
def checked?(selector, timeout: nil)
|
148
155
|
params = { selector: selector, timeout: timeout }.compact
|
149
156
|
@channel.send_message_to_server('isChecked', params)
|
@@ -26,7 +26,12 @@ module Playwright
|
|
26
26
|
console_message = ChannelOwners::ConsoleMessage.from(params['message'])
|
27
27
|
emit(Events::Page::Console, console_message)
|
28
28
|
})
|
29
|
+
@channel.on('crash', ->(_) { emit(Events::Page::Crash) })
|
30
|
+
@channel.on('dialog', method(:on_dialog))
|
29
31
|
@channel.on('domcontentloaded', ->(_) { emit(Events::Page::DOMContentLoaded) })
|
32
|
+
@channel.on('download', ->(params) {
|
33
|
+
emit(Events::Page::Download, ChannelOwners::Download.from(params['download']))
|
34
|
+
})
|
30
35
|
@channel.on('frameAttached', ->(params) {
|
31
36
|
on_frame_attached(ChannelOwners::Frame.from(params['frame']))
|
32
37
|
})
|
@@ -34,9 +39,43 @@ module Playwright
|
|
34
39
|
on_frame_detached(ChannelOwners::Frame.from(params['frame']))
|
35
40
|
})
|
36
41
|
@channel.on('load', ->(_) { emit(Events::Page::Load) })
|
42
|
+
@channel.on('pageError', ->(params) {
|
43
|
+
emit(Events::Page::PageError, Error.parse(params['error']['error']))
|
44
|
+
})
|
37
45
|
@channel.on('popup', ->(params) {
|
38
46
|
emit(Events::Page::Popup, ChannelOwners::Page.from(params['page']))
|
39
47
|
})
|
48
|
+
@channel.on('request', ->(params) {
|
49
|
+
emit(Events::Page::Request, ChannelOwners::Request.from(params['request']))
|
50
|
+
})
|
51
|
+
@channel.on('requestFailed', ->(params) {
|
52
|
+
on_request_failed(
|
53
|
+
ChannelOwners::Request.from(params['request']),
|
54
|
+
params['responseEndTiming'],
|
55
|
+
params['failureText'],
|
56
|
+
)
|
57
|
+
})
|
58
|
+
@channel.on('requestFinished', ->(params) {
|
59
|
+
on_request_finished(
|
60
|
+
ChannelOwners::Request.from(params['request']),
|
61
|
+
params['responseEndTiming'],
|
62
|
+
)
|
63
|
+
})
|
64
|
+
@channel.on('response', ->(params) {
|
65
|
+
emit(Events::Page::Response, ChannelOwners::Response.from(params['response']))
|
66
|
+
})
|
67
|
+
@channel.on('route', ->(params) {
|
68
|
+
on_route(ChannelOwners::Route.from(params['route']), ChannelOwners::Request.from(params['request']))
|
69
|
+
})
|
70
|
+
@channel.on('video', ->(params) {
|
71
|
+
video.send(:update_relative_path, params['relativePath'])
|
72
|
+
})
|
73
|
+
@channel.on('webSocket', ->(params) {
|
74
|
+
emit(Events::Page::WebSocket, ChannelOwners::WebSocket.from(params['webSocket']))
|
75
|
+
})
|
76
|
+
@channel.on('worker', ->(params) {
|
77
|
+
on_worker(ChannelOwners::Worker.from(params['worker']))
|
78
|
+
})
|
40
79
|
end
|
41
80
|
|
42
81
|
attr_reader \
|
@@ -47,6 +86,17 @@ module Playwright
|
|
47
86
|
:viewport_size,
|
48
87
|
:main_frame
|
49
88
|
|
89
|
+
private def on_request_failed(request, response_end_timing, failure_text)
|
90
|
+
request.send(:update_failure_text, failure_text)
|
91
|
+
request.send(:update_response_end_timing, response_end_timing)
|
92
|
+
emit(Events::Page::RequestFailed)
|
93
|
+
end
|
94
|
+
|
95
|
+
private def on_request_finished(request, response_end_timing)
|
96
|
+
request.send(:update_response_end_timing, response_end_timing)
|
97
|
+
emit(Events::Page::RequestFinished)
|
98
|
+
end
|
99
|
+
|
50
100
|
private def on_frame_attached(frame)
|
51
101
|
frame.send(:update_page_from_page, self)
|
52
102
|
@frames << frame
|
@@ -59,12 +109,25 @@ module Playwright
|
|
59
109
|
emit(Events::Page::FrameDetached, frame)
|
60
110
|
end
|
61
111
|
|
112
|
+
private def on_route(route, request)
|
113
|
+
# @routes.each ...
|
114
|
+
@browser_context.send(:on_route, route, request)
|
115
|
+
end
|
116
|
+
|
62
117
|
private def on_close
|
63
118
|
@closed = true
|
64
119
|
@browser_context.send(:remove_page, self)
|
65
120
|
emit(Events::Page::Close)
|
66
121
|
end
|
67
122
|
|
123
|
+
private def on_dialog(params)
|
124
|
+
dialog = ChannelOwners::Dialog.from(params['dialog'])
|
125
|
+
unless emit(Events::Page::Dialog, dialog)
|
126
|
+
dialog.dismiss # FIXME: this should be asynchronous
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
|
68
131
|
def context
|
69
132
|
@browser_context
|
70
133
|
end
|
@@ -121,6 +184,38 @@ module Playwright
|
|
121
184
|
@main_frame.query_selector_all(selector)
|
122
185
|
end
|
123
186
|
|
187
|
+
def wait_for_selector(selector, state: nil, timeout: nil)
|
188
|
+
@main_frame.wait_for_selector(selector, state: state, timeout: timeout)
|
189
|
+
end
|
190
|
+
|
191
|
+
def checked?(selector, timeout: nil)
|
192
|
+
@main_frame.checked?(selector, timeout: timeout)
|
193
|
+
end
|
194
|
+
|
195
|
+
def disabled?(selector, timeout: nil)
|
196
|
+
@main_frame.disabled?(selector, timeout: timeout)
|
197
|
+
end
|
198
|
+
|
199
|
+
def editable?(selector, timeout: nil)
|
200
|
+
@main_frame.editable?(selector, timeout: timeout)
|
201
|
+
end
|
202
|
+
|
203
|
+
def enabled?(selector, timeout: nil)
|
204
|
+
@main_frame.enabled?(selector, timeout: timeout)
|
205
|
+
end
|
206
|
+
|
207
|
+
def hidden?(selector, timeout: nil)
|
208
|
+
@main_frame.hidden?(selector, timeout: timeout)
|
209
|
+
end
|
210
|
+
|
211
|
+
def visible?(selector, timeout: nil)
|
212
|
+
@main_frame.visible?(selector, timeout: timeout)
|
213
|
+
end
|
214
|
+
|
215
|
+
def dispatch_event(selector, type, eventInit: nil, timeout: nil)
|
216
|
+
@main_frame.dispatch_event(selector, type, eventInit: eventInit, timeout: timeout)
|
217
|
+
end
|
218
|
+
|
124
219
|
def evaluate(pageFunction, arg: nil)
|
125
220
|
@main_frame.evaluate(pageFunction, arg: arg)
|
126
221
|
end
|
@@ -145,6 +240,25 @@ module Playwright
|
|
145
240
|
@main_frame.add_style_tag(content: content, path: path, url: url)
|
146
241
|
end
|
147
242
|
|
243
|
+
def expose_function(name, callback)
|
244
|
+
@channel.send_message_to_server('exposeBinding', name: name)
|
245
|
+
@bindings[name] = ->(_source, *args) { callback.call(*args) }
|
246
|
+
end
|
247
|
+
|
248
|
+
def expose_binding(name, callback, handle: nil)
|
249
|
+
params = {
|
250
|
+
name: name,
|
251
|
+
needsHandle: handle,
|
252
|
+
}.compact
|
253
|
+
@channel.send_message_to_server('exposeBinding', params)
|
254
|
+
@bindings[name] = callback
|
255
|
+
end
|
256
|
+
|
257
|
+
def set_extra_http_headers(headers)
|
258
|
+
serialized_headers = HttpHeaders.new(headers).as_serialized
|
259
|
+
@channel.send_message_to_server('setExtraHTTPHeaders', headers: serialized_headers)
|
260
|
+
end
|
261
|
+
|
148
262
|
def url
|
149
263
|
@main_frame.url
|
150
264
|
end
|
@@ -174,12 +288,45 @@ module Playwright
|
|
174
288
|
@main_frame.wait_for_load_state(state: state, timeout: timeout)
|
175
289
|
end
|
176
290
|
|
291
|
+
def go_back(timeout: nil, waitUntil: nil)
|
292
|
+
params = { timeout: timeout, waitUntil: waitUntil }.compact
|
293
|
+
resp = @channel.send_message_to_server('goBack', params)
|
294
|
+
ChannelOwners::Response.from_nullable(resp)
|
295
|
+
end
|
296
|
+
|
297
|
+
def go_forward(timeout: nil, waitUntil: nil)
|
298
|
+
params = { timeout: timeout, waitUntil: waitUntil }.compact
|
299
|
+
resp = @channel.send_message_to_server('goForward', params)
|
300
|
+
ChannelOwners::Response.from_nullable(resp)
|
301
|
+
end
|
302
|
+
|
303
|
+
def emulate_media(colorScheme: nil, media: nil)
|
304
|
+
params = {
|
305
|
+
colorScheme: colorScheme,
|
306
|
+
media: media,
|
307
|
+
}.compact
|
308
|
+
@channel.send_message_to_server('emulateMedia', params)
|
309
|
+
|
310
|
+
nil
|
311
|
+
end
|
312
|
+
|
177
313
|
def set_viewport_size(viewportSize)
|
178
314
|
@viewport_size = viewportSize
|
179
315
|
@channel.send_message_to_server('setViewportSize', { viewportSize: viewportSize })
|
180
316
|
nil
|
181
317
|
end
|
182
318
|
|
319
|
+
def bring_to_front
|
320
|
+
@channel.send_message_to_server('bringToFront')
|
321
|
+
nil
|
322
|
+
end
|
323
|
+
|
324
|
+
def add_init_script(script, arg: nil)
|
325
|
+
@channel.send_message_to_server('addInitScript', source: script)
|
326
|
+
# FIXME: handling `arg` for function `script`
|
327
|
+
nil
|
328
|
+
end
|
329
|
+
|
183
330
|
def screenshot(
|
184
331
|
path: nil,
|
185
332
|
type: nil,
|
@@ -269,6 +416,23 @@ module Playwright
|
|
269
416
|
)
|
270
417
|
end
|
271
418
|
|
419
|
+
def tap_point(
|
420
|
+
selector,
|
421
|
+
force: nil,
|
422
|
+
modifiers: nil,
|
423
|
+
noWaitAfter: nil,
|
424
|
+
position: nil,
|
425
|
+
timeout: nil)
|
426
|
+
@main_frame.tap_point(
|
427
|
+
selector,
|
428
|
+
force: force,
|
429
|
+
modifiers: modifiers,
|
430
|
+
noWaitAfter: noWaitAfter,
|
431
|
+
position: position,
|
432
|
+
timeout: timeout,
|
433
|
+
)
|
434
|
+
end
|
435
|
+
|
272
436
|
def fill(selector, value, noWaitAfter: nil, timeout: nil)
|
273
437
|
@main_frame.fill(selector, value, noWaitAfter: noWaitAfter, timeout: timeout)
|
274
438
|
end
|
@@ -277,6 +441,45 @@ module Playwright
|
|
277
441
|
@main_frame.focus(selector, timeout: timeout)
|
278
442
|
end
|
279
443
|
|
444
|
+
def text_content(selector, timeout: nil)
|
445
|
+
@main_frame.text_content(selector, timeout: timeout)
|
446
|
+
end
|
447
|
+
|
448
|
+
def inner_text(selector, timeout: nil)
|
449
|
+
@main_frame.inner_text(selector, timeout: timeout)
|
450
|
+
end
|
451
|
+
|
452
|
+
def inner_html(selector, timeout: nil)
|
453
|
+
@main_frame.inner_html(selector, timeout: timeout)
|
454
|
+
end
|
455
|
+
|
456
|
+
def get_attribute(selector, name, timeout: nil)
|
457
|
+
@main_frame.get_attribute(selector, name, timeout: timeout)
|
458
|
+
end
|
459
|
+
|
460
|
+
def hover(
|
461
|
+
selector,
|
462
|
+
force: nil,
|
463
|
+
modifiers: nil,
|
464
|
+
position: nil,
|
465
|
+
timeout: nil)
|
466
|
+
@main_frame.hover(
|
467
|
+
selector,
|
468
|
+
force: force,
|
469
|
+
modifiers: modifiers,
|
470
|
+
position: position,
|
471
|
+
timeout: timeout,
|
472
|
+
)
|
473
|
+
end
|
474
|
+
|
475
|
+
def select_option(selector, values, noWaitAfter: nil, timeout: nil)
|
476
|
+
@main_frame.select_option(selector, values, noWaitAfter: noWaitAfter, timeout: timeout)
|
477
|
+
end
|
478
|
+
|
479
|
+
def set_input_files(selector, files, noWaitAfter: nil, timeout: nil)
|
480
|
+
@main_frame.set_input_files(selector, files, noWaitAfter: noWaitAfter, timeout: timeout)
|
481
|
+
end
|
482
|
+
|
280
483
|
def type(
|
281
484
|
selector,
|
282
485
|
text,
|
@@ -297,10 +500,57 @@ module Playwright
|
|
297
500
|
@main_frame.press(selector, key, delay: delay, noWaitAfter: noWaitAfter, timeout: timeout)
|
298
501
|
end
|
299
502
|
|
503
|
+
def check(selector, force: nil, noWaitAfter: nil, timeout: nil)
|
504
|
+
@main_frame.check(selector, force: force, noWaitAfter: noWaitAfter, timeout: timeout)
|
505
|
+
end
|
506
|
+
|
507
|
+
def uncheck(selector, force: nil, noWaitAfter: nil, timeout: nil)
|
508
|
+
@main_frame.uncheck(selector, force: force, noWaitAfter: noWaitAfter, timeout: timeout)
|
509
|
+
end
|
510
|
+
|
300
511
|
def wait_for_function(pageFunction, arg: nil, polling: nil, timeout: nil)
|
301
512
|
@main_frame.wait_for_function(pageFunction, arg: arg, polling: polling, timeout: timeout)
|
302
513
|
end
|
303
514
|
|
515
|
+
def pdf(
|
516
|
+
displayHeaderFooter: nil,
|
517
|
+
footerTemplate: nil,
|
518
|
+
format: nil,
|
519
|
+
headerTemplate: nil,
|
520
|
+
height: nil,
|
521
|
+
landscape: nil,
|
522
|
+
margin: nil,
|
523
|
+
pageRanges: nil,
|
524
|
+
path: nil,
|
525
|
+
preferCSSPageSize: nil,
|
526
|
+
printBackground: nil,
|
527
|
+
scale: nil,
|
528
|
+
width: nil)
|
529
|
+
|
530
|
+
params = {
|
531
|
+
displayHeaderFooter: displayHeaderFooter,
|
532
|
+
footerTemplate: footerTemplate,
|
533
|
+
format: format,
|
534
|
+
headerTemplate: headerTemplate,
|
535
|
+
height: height,
|
536
|
+
landscape: landscape,
|
537
|
+
margin: margin,
|
538
|
+
pageRanges: pageRanges,
|
539
|
+
preferCSSPageSize: preferCSSPageSize,
|
540
|
+
printBackground: printBackground,
|
541
|
+
scale: scale,
|
542
|
+
width: width,
|
543
|
+
}.compact
|
544
|
+
encoded_binary = @channel.send_message_to_server('pdf', params)
|
545
|
+
decoded_binary = Base64.strict_decode64(encoded_binary)
|
546
|
+
if path
|
547
|
+
File.open(path, 'wb') do |f|
|
548
|
+
f.write(decoded_binary)
|
549
|
+
end
|
550
|
+
end
|
551
|
+
decoded_binary
|
552
|
+
end
|
553
|
+
|
304
554
|
class CrashedError < StandardError
|
305
555
|
def initialize
|
306
556
|
super('Page crashed')
|