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
@@ -71,7 +71,7 @@ module Playwright
|
|
71
71
|
|
72
72
|
predicate =
|
73
73
|
if url
|
74
|
-
matcher = UrlMatcher.new(url)
|
74
|
+
matcher = UrlMatcher.new(url, base_url: @page.context.send(:base_url))
|
75
75
|
->(event) { event['error'] || matcher.match?(event['url']) }
|
76
76
|
else
|
77
77
|
->(_) { true }
|
@@ -99,7 +99,7 @@ module Playwright
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def wait_for_url(url, timeout: nil, waitUntil: nil)
|
102
|
-
matcher = UrlMatcher.new(url)
|
102
|
+
matcher = UrlMatcher.new(url, base_url: @page.context.send(:base_url))
|
103
103
|
if matcher.match?(@url)
|
104
104
|
wait_for_load_state(state: waitUntil, timeout: timeout)
|
105
105
|
else
|
@@ -139,8 +139,12 @@ module Playwright
|
|
139
139
|
JavaScript::Expression.new(pageFunction, arg).evaluate_handle(@channel)
|
140
140
|
end
|
141
141
|
|
142
|
-
def query_selector(selector)
|
143
|
-
|
142
|
+
def query_selector(selector, strict: nil)
|
143
|
+
params = {
|
144
|
+
selector: selector,
|
145
|
+
strict: strict,
|
146
|
+
}.compact
|
147
|
+
resp = @channel.send_message_to_server('querySelector', params)
|
144
148
|
ChannelOwners::ElementHandle.from_nullable(resp)
|
145
149
|
end
|
146
150
|
|
@@ -150,48 +154,53 @@ module Playwright
|
|
150
154
|
end
|
151
155
|
end
|
152
156
|
|
153
|
-
def wait_for_selector(selector, state: nil, timeout: nil)
|
154
|
-
params = { selector: selector, state: state, timeout: timeout }.compact
|
157
|
+
def wait_for_selector(selector, state: nil, strict: nil, timeout: nil)
|
158
|
+
params = { selector: selector, state: state, strict: strict, timeout: timeout }.compact
|
155
159
|
resp = @channel.send_message_to_server('waitForSelector', params)
|
156
160
|
|
157
161
|
ChannelOwners::ElementHandle.from_nullable(resp)
|
158
162
|
end
|
159
163
|
|
160
|
-
def checked?(selector, timeout: nil)
|
161
|
-
params = { selector: selector, timeout: timeout }.compact
|
164
|
+
def checked?(selector, strict: nil, timeout: nil)
|
165
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
162
166
|
@channel.send_message_to_server('isChecked', params)
|
163
167
|
end
|
164
168
|
|
165
|
-
def disabled?(selector, timeout: nil)
|
166
|
-
params = { selector: selector, timeout: timeout }.compact
|
169
|
+
def disabled?(selector, strict: nil, timeout: nil)
|
170
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
167
171
|
@channel.send_message_to_server('isDisabled', params)
|
168
172
|
end
|
169
173
|
|
170
|
-
def editable?(selector, timeout: nil)
|
171
|
-
params = { selector: selector, timeout: timeout }.compact
|
174
|
+
def editable?(selector, strict: nil, timeout: nil)
|
175
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
172
176
|
@channel.send_message_to_server('isEditable', params)
|
173
177
|
end
|
174
178
|
|
175
|
-
def enabled?(selector, timeout: nil)
|
176
|
-
params = { selector: selector, timeout: timeout }.compact
|
179
|
+
def enabled?(selector, strict: nil, timeout: nil)
|
180
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
177
181
|
@channel.send_message_to_server('isEnabled', params)
|
178
182
|
end
|
179
183
|
|
180
|
-
def hidden?(selector, timeout: nil)
|
181
|
-
params = { selector: selector, timeout: timeout }.compact
|
184
|
+
def hidden?(selector, strict: nil, timeout: nil)
|
185
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
182
186
|
@channel.send_message_to_server('isHidden', params)
|
183
187
|
end
|
184
188
|
|
185
|
-
def visible?(selector, timeout: nil)
|
186
|
-
params = { selector: selector, timeout: timeout }.compact
|
189
|
+
def visible?(selector, strict: nil, timeout: nil)
|
190
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
187
191
|
@channel.send_message_to_server('isVisible', params)
|
188
192
|
end
|
189
193
|
|
190
|
-
def
|
194
|
+
def locator(selector)
|
195
|
+
LocatorImpl.new(frame: self, timeout_settings: @page.send(:timeout_settings), selector: selector)
|
196
|
+
end
|
197
|
+
|
198
|
+
def dispatch_event(selector, type, eventInit: nil, strict: nil, timeout: nil)
|
191
199
|
params = {
|
192
200
|
selector: selector,
|
193
201
|
type: type,
|
194
202
|
eventInit: JavaScript::ValueSerializer.new(eventInit).serialize,
|
203
|
+
strict: strict,
|
195
204
|
timeout: timeout,
|
196
205
|
}.compact
|
197
206
|
@channel.send_message_to_server('dispatchEvent', params)
|
@@ -199,8 +208,8 @@ module Playwright
|
|
199
208
|
nil
|
200
209
|
end
|
201
210
|
|
202
|
-
def eval_on_selector(selector, pageFunction, arg: nil)
|
203
|
-
JavaScript::Expression.new(pageFunction, arg).eval_on_selector(@channel, selector)
|
211
|
+
def eval_on_selector(selector, pageFunction, arg: nil, strict: nil)
|
212
|
+
JavaScript::Expression.new(pageFunction, arg).eval_on_selector(@channel, selector, strict: strict)
|
204
213
|
end
|
205
214
|
|
206
215
|
def eval_on_selector_all(selector, pageFunction, arg: nil)
|
@@ -273,6 +282,7 @@ module Playwright
|
|
273
282
|
modifiers: nil,
|
274
283
|
noWaitAfter: nil,
|
275
284
|
position: nil,
|
285
|
+
strict: nil,
|
276
286
|
timeout: nil,
|
277
287
|
trial: nil)
|
278
288
|
|
@@ -285,6 +295,7 @@ module Playwright
|
|
285
295
|
modifiers: modifiers,
|
286
296
|
noWaitAfter: noWaitAfter,
|
287
297
|
position: position,
|
298
|
+
strict: strict,
|
288
299
|
timeout: timeout,
|
289
300
|
trial: trial,
|
290
301
|
}.compact
|
@@ -293,6 +304,33 @@ module Playwright
|
|
293
304
|
nil
|
294
305
|
end
|
295
306
|
|
307
|
+
def drag_and_drop(
|
308
|
+
source,
|
309
|
+
target,
|
310
|
+
force: nil,
|
311
|
+
noWaitAfter: nil,
|
312
|
+
sourcePosition: nil,
|
313
|
+
strict: nil,
|
314
|
+
targetPosition: nil,
|
315
|
+
timeout: nil,
|
316
|
+
trial: nil)
|
317
|
+
|
318
|
+
params = {
|
319
|
+
source: source,
|
320
|
+
target: target,
|
321
|
+
force: force,
|
322
|
+
noWaitAfter: noWaitAfter,
|
323
|
+
sourcePosition: sourcePosition,
|
324
|
+
strict: strict,
|
325
|
+
targetPosition: targetPosition,
|
326
|
+
timeout: timeout,
|
327
|
+
trial: trial,
|
328
|
+
}.compact
|
329
|
+
@channel.send_message_to_server('dragAndDrop', params)
|
330
|
+
|
331
|
+
nil
|
332
|
+
end
|
333
|
+
|
296
334
|
def dblclick(
|
297
335
|
selector,
|
298
336
|
button: nil,
|
@@ -301,6 +339,7 @@ module Playwright
|
|
301
339
|
modifiers: nil,
|
302
340
|
noWaitAfter: nil,
|
303
341
|
position: nil,
|
342
|
+
strict: nil,
|
304
343
|
timeout: nil,
|
305
344
|
trial: nil)
|
306
345
|
|
@@ -312,6 +351,7 @@ module Playwright
|
|
312
351
|
modifiers: modifiers,
|
313
352
|
noWaitAfter: noWaitAfter,
|
314
353
|
position: position,
|
354
|
+
strict: strict,
|
315
355
|
timeout: timeout,
|
316
356
|
trial: trial,
|
317
357
|
}.compact
|
@@ -326,6 +366,7 @@ module Playwright
|
|
326
366
|
modifiers: nil,
|
327
367
|
noWaitAfter: nil,
|
328
368
|
position: nil,
|
369
|
+
strict: nil,
|
329
370
|
timeout: nil,
|
330
371
|
trial: nil)
|
331
372
|
params = {
|
@@ -334,6 +375,7 @@ module Playwright
|
|
334
375
|
modifiers: modifiers,
|
335
376
|
noWaitAfter: noWaitAfter,
|
336
377
|
position: position,
|
378
|
+
strict: strict,
|
337
379
|
timeout: timeout,
|
338
380
|
trial: trial,
|
339
381
|
}.compact
|
@@ -347,12 +389,14 @@ module Playwright
|
|
347
389
|
value,
|
348
390
|
force: nil,
|
349
391
|
noWaitAfter: nil,
|
392
|
+
strict: nil,
|
350
393
|
timeout: nil)
|
351
394
|
params = {
|
352
395
|
selector: selector,
|
353
396
|
value: value,
|
354
397
|
force: force,
|
355
398
|
noWaitAfter: noWaitAfter,
|
399
|
+
strict: strict,
|
356
400
|
timeout: timeout,
|
357
401
|
}.compact
|
358
402
|
@channel.send_message_to_server('fill', params)
|
@@ -360,31 +404,32 @@ module Playwright
|
|
360
404
|
nil
|
361
405
|
end
|
362
406
|
|
363
|
-
def focus(selector, timeout: nil)
|
364
|
-
params = { selector: selector, timeout: timeout }.compact
|
407
|
+
def focus(selector, strict: nil, timeout: nil)
|
408
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
365
409
|
@channel.send_message_to_server('focus', params)
|
366
410
|
nil
|
367
411
|
end
|
368
412
|
|
369
|
-
def text_content(selector, timeout: nil)
|
370
|
-
params = { selector: selector, timeout: timeout }.compact
|
413
|
+
def text_content(selector, strict: nil, timeout: nil)
|
414
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
371
415
|
@channel.send_message_to_server('textContent', params)
|
372
416
|
end
|
373
417
|
|
374
|
-
def inner_text(selector, timeout: nil)
|
375
|
-
params = { selector: selector, timeout: timeout }.compact
|
418
|
+
def inner_text(selector, strict: nil, timeout: nil)
|
419
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
376
420
|
@channel.send_message_to_server('innerText', params)
|
377
421
|
end
|
378
422
|
|
379
|
-
def inner_html(selector, timeout: nil)
|
380
|
-
params = { selector: selector, timeout: timeout }.compact
|
423
|
+
def inner_html(selector, strict: nil, timeout: nil)
|
424
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
381
425
|
@channel.send_message_to_server('innerHTML', params)
|
382
426
|
end
|
383
427
|
|
384
|
-
def get_attribute(selector, name, timeout: nil)
|
428
|
+
def get_attribute(selector, name, strict: nil, timeout: nil)
|
385
429
|
params = {
|
386
430
|
selector: selector,
|
387
431
|
name: name,
|
432
|
+
strict: strict,
|
388
433
|
timeout: timeout,
|
389
434
|
}.compact
|
390
435
|
@channel.send_message_to_server('getAttribute', params)
|
@@ -395,6 +440,7 @@ module Playwright
|
|
395
440
|
force: nil,
|
396
441
|
modifiers: nil,
|
397
442
|
position: nil,
|
443
|
+
strict: nil,
|
398
444
|
timeout: nil,
|
399
445
|
trial: nil)
|
400
446
|
params = {
|
@@ -402,6 +448,7 @@ module Playwright
|
|
402
448
|
force: force,
|
403
449
|
modifiers: modifiers,
|
404
450
|
position: position,
|
451
|
+
strict: strict,
|
405
452
|
timeout: timeout,
|
406
453
|
trial: trial,
|
407
454
|
}.compact
|
@@ -418,6 +465,7 @@ module Playwright
|
|
418
465
|
label: nil,
|
419
466
|
force: nil,
|
420
467
|
noWaitAfter: nil,
|
468
|
+
strict: nil,
|
421
469
|
timeout: nil)
|
422
470
|
base_params = SelectOptionValues.new(
|
423
471
|
element: element,
|
@@ -425,18 +473,24 @@ module Playwright
|
|
425
473
|
value: value,
|
426
474
|
label: label,
|
427
475
|
).as_params
|
428
|
-
params = base_params.merge({ selector: selector, force: force, noWaitAfter: noWaitAfter, timeout: timeout }.compact)
|
476
|
+
params = base_params.merge({ selector: selector, force: force, noWaitAfter: noWaitAfter, strict: strict, timeout: timeout }.compact)
|
429
477
|
@channel.send_message_to_server('selectOption', params)
|
430
478
|
end
|
431
479
|
|
432
|
-
def input_value(selector, timeout: nil)
|
433
|
-
params = { selector: selector, timeout: timeout }.compact
|
480
|
+
def input_value(selector, strict: nil, timeout: nil)
|
481
|
+
params = { selector: selector, strict: strict, timeout: timeout }.compact
|
434
482
|
@channel.send_message_to_server('inputValue', params)
|
435
483
|
end
|
436
484
|
|
437
|
-
def set_input_files(selector, files, noWaitAfter: nil, timeout: nil)
|
485
|
+
def set_input_files(selector, files, noWaitAfter: nil, strict: nil, timeout: nil)
|
438
486
|
file_payloads = InputFiles.new(files).as_params
|
439
|
-
params = {
|
487
|
+
params = {
|
488
|
+
files: file_payloads,
|
489
|
+
selector: selector,
|
490
|
+
noWaitAfter: noWaitAfter,
|
491
|
+
strict: strict,
|
492
|
+
timeout: timeout,
|
493
|
+
}.compact
|
440
494
|
@channel.send_message_to_server('setInputFiles', params)
|
441
495
|
|
442
496
|
nil
|
@@ -447,6 +501,7 @@ module Playwright
|
|
447
501
|
text,
|
448
502
|
delay: nil,
|
449
503
|
noWaitAfter: nil,
|
504
|
+
strict: nil,
|
450
505
|
timeout: nil)
|
451
506
|
|
452
507
|
params = {
|
@@ -454,6 +509,7 @@ module Playwright
|
|
454
509
|
text: text,
|
455
510
|
delay: delay,
|
456
511
|
noWaitAfter: noWaitAfter,
|
512
|
+
strict: strict,
|
457
513
|
timeout: timeout,
|
458
514
|
}.compact
|
459
515
|
@channel.send_message_to_server('type', params)
|
@@ -466,6 +522,7 @@ module Playwright
|
|
466
522
|
key,
|
467
523
|
delay: nil,
|
468
524
|
noWaitAfter: nil,
|
525
|
+
strict: nil,
|
469
526
|
timeout: nil)
|
470
527
|
|
471
528
|
params = {
|
@@ -473,6 +530,7 @@ module Playwright
|
|
473
530
|
key: key,
|
474
531
|
delay: delay,
|
475
532
|
noWaitAfter: noWaitAfter,
|
533
|
+
strict: strict,
|
476
534
|
timeout: timeout,
|
477
535
|
}.compact
|
478
536
|
@channel.send_message_to_server('press', params)
|
@@ -485,6 +543,7 @@ module Playwright
|
|
485
543
|
force: nil,
|
486
544
|
noWaitAfter: nil,
|
487
545
|
position: nil,
|
546
|
+
strict: nil,
|
488
547
|
timeout: nil,
|
489
548
|
trial: nil)
|
490
549
|
|
@@ -493,6 +552,7 @@ module Playwright
|
|
493
552
|
force: force,
|
494
553
|
noWaitAfter: noWaitAfter,
|
495
554
|
position: position,
|
555
|
+
strict: strict,
|
496
556
|
timeout: timeout,
|
497
557
|
trial: trial,
|
498
558
|
}.compact
|
@@ -506,6 +566,7 @@ module Playwright
|
|
506
566
|
force: nil,
|
507
567
|
noWaitAfter: nil,
|
508
568
|
position: nil,
|
569
|
+
strict: nil,
|
509
570
|
timeout: nil,
|
510
571
|
trial: nil)
|
511
572
|
|
@@ -514,6 +575,7 @@ module Playwright
|
|
514
575
|
force: force,
|
515
576
|
noWaitAfter: noWaitAfter,
|
516
577
|
position: position,
|
578
|
+
strict: strict,
|
517
579
|
timeout: timeout,
|
518
580
|
trial: trial,
|
519
581
|
}.compact
|
@@ -522,6 +584,10 @@ module Playwright
|
|
522
584
|
nil
|
523
585
|
end
|
524
586
|
|
587
|
+
def wait_for_timeout(timeout)
|
588
|
+
sleep(timeout / 1000.0)
|
589
|
+
end
|
590
|
+
|
525
591
|
def wait_for_function(pageFunction, arg: nil, polling: nil, timeout: nil)
|
526
592
|
if polling.is_a?(String) && polling != 'raf'
|
527
593
|
raise ArgumentError.new("Unknown polling option: #{polling}")
|
@@ -9,7 +9,7 @@ module Playwright
|
|
9
9
|
private def after_initialize
|
10
10
|
@browser_context = @parent
|
11
11
|
@timeout_settings = TimeoutSettings.new(@browser_context.send(:_timeout_settings))
|
12
|
-
@accessibility =
|
12
|
+
@accessibility = AccessibilityImpl.new(@channel)
|
13
13
|
@keyboard = KeyboardImpl.new(@channel)
|
14
14
|
@mouse = MouseImpl.new(@channel)
|
15
15
|
@touchscreen = TouchscreenImpl.new(@channel)
|
@@ -21,8 +21,9 @@ module Playwright
|
|
21
21
|
}
|
22
22
|
end
|
23
23
|
@closed = false
|
24
|
+
@workers = Set.new
|
24
25
|
@bindings = {}
|
25
|
-
@routes =
|
26
|
+
@routes = []
|
26
27
|
|
27
28
|
@main_frame = ChannelOwners::Frame.from(@initializer['mainFrame'])
|
28
29
|
@main_frame.send(:update_page_from_page, self)
|
@@ -66,7 +67,7 @@ module Playwright
|
|
66
67
|
})
|
67
68
|
@channel.on('worker', ->(params) {
|
68
69
|
worker = ChannelOwners::Worker.from(params['worker'])
|
69
|
-
|
70
|
+
on_worker(worker)
|
70
71
|
})
|
71
72
|
end
|
72
73
|
|
@@ -110,9 +111,16 @@ module Playwright
|
|
110
111
|
@browser_context.send(:on_binding, binding_call)
|
111
112
|
end
|
112
113
|
|
114
|
+
private def on_worker(worker)
|
115
|
+
worker.page = self
|
116
|
+
@workers << worker
|
117
|
+
emit(Events::Page::Worker, worker)
|
118
|
+
end
|
119
|
+
|
113
120
|
private def on_close
|
114
121
|
@closed = true
|
115
122
|
@browser_context.send(:remove_page, self)
|
123
|
+
@browser_context.send(:remove_background_page, self)
|
116
124
|
emit(Events::Page::Close)
|
117
125
|
end
|
118
126
|
|
@@ -124,7 +132,7 @@ module Playwright
|
|
124
132
|
end
|
125
133
|
|
126
134
|
private def on_download(params)
|
127
|
-
download =
|
135
|
+
download = DownloadImpl.new(
|
128
136
|
page: self,
|
129
137
|
url: params['url'],
|
130
138
|
suggested_filename: params['suggestedFilename'],
|
@@ -184,15 +192,8 @@ module Playwright
|
|
184
192
|
if name
|
185
193
|
@frames.find { |f| f.name == name }
|
186
194
|
elsif url
|
187
|
-
|
188
|
-
|
189
|
-
when String
|
190
|
-
@frames.find { |f| f.url == url }
|
191
|
-
when Regexp
|
192
|
-
@frames.find { |f| url.match?(f.url) }
|
193
|
-
else
|
194
|
-
raise NotImplementedError.new('Page#frame with url is not completely implemented yet')
|
195
|
-
end
|
195
|
+
matcher = UrlMatcher.new(url, base_url: @browser_context.send(:base_url))
|
196
|
+
@frames.find { |f| matcher.match?(f.url) }
|
196
197
|
else
|
197
198
|
raise ArgumentError.new('Either name or url matcher should be specified')
|
198
199
|
end
|
@@ -212,44 +213,48 @@ module Playwright
|
|
212
213
|
@channel.send_message_to_server('setDefaultTimeoutNoReply', timeout: timeout)
|
213
214
|
end
|
214
215
|
|
215
|
-
def query_selector(selector)
|
216
|
-
@main_frame.query_selector(selector)
|
216
|
+
def query_selector(selector, strict: nil)
|
217
|
+
@main_frame.query_selector(selector, strict: strict)
|
217
218
|
end
|
218
219
|
|
219
220
|
def query_selector_all(selector)
|
220
221
|
@main_frame.query_selector_all(selector)
|
221
222
|
end
|
222
223
|
|
223
|
-
def wait_for_selector(selector, state: nil, timeout: nil)
|
224
|
-
@main_frame.wait_for_selector(selector, state: state, timeout: timeout)
|
224
|
+
def wait_for_selector(selector, state: nil, strict: nil, timeout: nil)
|
225
|
+
@main_frame.wait_for_selector(selector, state: state, strict: strict, timeout: timeout)
|
226
|
+
end
|
227
|
+
|
228
|
+
def checked?(selector, strict: nil, timeout: nil)
|
229
|
+
@main_frame.checked?(selector, strict: strict, timeout: timeout)
|
225
230
|
end
|
226
231
|
|
227
|
-
def
|
228
|
-
@main_frame.
|
232
|
+
def disabled?(selector, strict: nil, timeout: nil)
|
233
|
+
@main_frame.disabled?(selector, strict: strict, timeout: timeout)
|
229
234
|
end
|
230
235
|
|
231
|
-
def
|
232
|
-
@main_frame.
|
236
|
+
def editable?(selector, strict: nil, timeout: nil)
|
237
|
+
@main_frame.editable?(selector, strict: strict, timeout: timeout)
|
233
238
|
end
|
234
239
|
|
235
|
-
def
|
236
|
-
@main_frame.
|
240
|
+
def enabled?(selector, strict: nil, timeout: nil)
|
241
|
+
@main_frame.enabled?(selector, strict: strict, timeout: timeout)
|
237
242
|
end
|
238
243
|
|
239
|
-
def
|
240
|
-
@main_frame.
|
244
|
+
def hidden?(selector, strict: nil, timeout: nil)
|
245
|
+
@main_frame.hidden?(selector, strict: strict, timeout: timeout)
|
241
246
|
end
|
242
247
|
|
243
|
-
def
|
244
|
-
@main_frame.
|
248
|
+
def visible?(selector, strict: nil, timeout: nil)
|
249
|
+
@main_frame.visible?(selector, strict: strict, timeout: timeout)
|
245
250
|
end
|
246
251
|
|
247
|
-
def
|
248
|
-
@main_frame.
|
252
|
+
def locator(selector)
|
253
|
+
@main_frame.locator(selector)
|
249
254
|
end
|
250
255
|
|
251
|
-
def dispatch_event(selector, type, eventInit: nil, timeout: nil)
|
252
|
-
@main_frame.dispatch_event(selector, type, eventInit: eventInit, timeout: timeout)
|
256
|
+
def dispatch_event(selector, type, eventInit: nil, strict: nil, timeout: nil)
|
257
|
+
@main_frame.dispatch_event(selector, type, eventInit: eventInit, strict: strict, timeout: timeout)
|
253
258
|
end
|
254
259
|
|
255
260
|
def evaluate(pageFunction, arg: nil)
|
@@ -260,8 +265,8 @@ module Playwright
|
|
260
265
|
@main_frame.evaluate_handle(pageFunction, arg: arg)
|
261
266
|
end
|
262
267
|
|
263
|
-
def eval_on_selector(selector, pageFunction, arg: nil)
|
264
|
-
@main_frame.eval_on_selector(selector, pageFunction, arg: arg)
|
268
|
+
def eval_on_selector(selector, pageFunction, arg: nil, strict: nil)
|
269
|
+
@main_frame.eval_on_selector(selector, pageFunction, arg: arg, strict: strict)
|
265
270
|
end
|
266
271
|
|
267
272
|
def eval_on_selector_all(selector, pageFunction, arg: nil)
|
@@ -377,8 +382,8 @@ module Playwright
|
|
377
382
|
end
|
378
383
|
|
379
384
|
def route(url, handler)
|
380
|
-
entry = RouteHandlerEntry.new(url, handler)
|
381
|
-
@routes
|
385
|
+
entry = RouteHandlerEntry.new(url, @browser_context.send(:base_url), handler)
|
386
|
+
@routes.unshift(entry)
|
382
387
|
if @routes.count >= 1
|
383
388
|
@channel.send_message_to_server('setNetworkInterceptionEnabled', enabled: true)
|
384
389
|
end
|
@@ -446,6 +451,7 @@ module Playwright
|
|
446
451
|
modifiers: nil,
|
447
452
|
noWaitAfter: nil,
|
448
453
|
position: nil,
|
454
|
+
strict: nil,
|
449
455
|
timeout: nil,
|
450
456
|
trial: nil)
|
451
457
|
|
@@ -458,11 +464,35 @@ module Playwright
|
|
458
464
|
modifiers: modifiers,
|
459
465
|
noWaitAfter: noWaitAfter,
|
460
466
|
position: position,
|
467
|
+
strict: strict,
|
461
468
|
timeout: timeout,
|
462
469
|
trial: trial,
|
463
470
|
)
|
464
471
|
end
|
465
472
|
|
473
|
+
def drag_and_drop(
|
474
|
+
source,
|
475
|
+
target,
|
476
|
+
force: nil,
|
477
|
+
noWaitAfter: nil,
|
478
|
+
sourcePosition: nil,
|
479
|
+
strict: nil,
|
480
|
+
targetPosition: nil,
|
481
|
+
timeout: nil,
|
482
|
+
trial: nil)
|
483
|
+
|
484
|
+
@main_frame.drag_and_drop(
|
485
|
+
source,
|
486
|
+
target,
|
487
|
+
force: force,
|
488
|
+
noWaitAfter: noWaitAfter,
|
489
|
+
sourcePosition: sourcePosition,
|
490
|
+
strict: strict,
|
491
|
+
targetPosition: targetPosition,
|
492
|
+
timeout: timeout,
|
493
|
+
trial: trial)
|
494
|
+
end
|
495
|
+
|
466
496
|
def dblclick(
|
467
497
|
selector,
|
468
498
|
button: nil,
|
@@ -471,6 +501,7 @@ module Playwright
|
|
471
501
|
modifiers: nil,
|
472
502
|
noWaitAfter: nil,
|
473
503
|
position: nil,
|
504
|
+
strict: nil,
|
474
505
|
timeout: nil,
|
475
506
|
trial: nil)
|
476
507
|
@main_frame.dblclick(
|
@@ -481,6 +512,7 @@ module Playwright
|
|
481
512
|
modifiers: modifiers,
|
482
513
|
noWaitAfter: noWaitAfter,
|
483
514
|
position: position,
|
515
|
+
strict: strict,
|
484
516
|
timeout: timeout,
|
485
517
|
trial: trial,
|
486
518
|
)
|
@@ -492,6 +524,7 @@ module Playwright
|
|
492
524
|
modifiers: nil,
|
493
525
|
noWaitAfter: nil,
|
494
526
|
position: nil,
|
527
|
+
strict: nil,
|
495
528
|
timeout: nil,
|
496
529
|
trial: nil)
|
497
530
|
@main_frame.tap_point(
|
@@ -500,6 +533,7 @@ module Playwright
|
|
500
533
|
modifiers: modifiers,
|
501
534
|
noWaitAfter: noWaitAfter,
|
502
535
|
position: position,
|
536
|
+
strict: strict,
|
503
537
|
timeout: timeout,
|
504
538
|
trial: trial,
|
505
539
|
)
|
@@ -510,28 +544,35 @@ module Playwright
|
|
510
544
|
value,
|
511
545
|
force: nil,
|
512
546
|
noWaitAfter: nil,
|
547
|
+
strict: nil,
|
513
548
|
timeout: nil)
|
514
|
-
@main_frame.fill(
|
549
|
+
@main_frame.fill(
|
550
|
+
selector,
|
551
|
+
value,
|
552
|
+
force: force,
|
553
|
+
noWaitAfter: noWaitAfter,
|
554
|
+
strict: strict,
|
555
|
+
timeout: timeout)
|
515
556
|
end
|
516
557
|
|
517
|
-
def focus(selector, timeout: nil)
|
518
|
-
@main_frame.focus(selector, timeout: timeout)
|
558
|
+
def focus(selector, strict: nil, timeout: nil)
|
559
|
+
@main_frame.focus(selector, strict: strict, timeout: timeout)
|
519
560
|
end
|
520
561
|
|
521
|
-
def text_content(selector, timeout: nil)
|
522
|
-
@main_frame.text_content(selector, timeout: timeout)
|
562
|
+
def text_content(selector, strict: nil, timeout: nil)
|
563
|
+
@main_frame.text_content(selector, strict: strict, timeout: timeout)
|
523
564
|
end
|
524
565
|
|
525
|
-
def inner_text(selector, timeout: nil)
|
526
|
-
@main_frame.inner_text(selector, timeout: timeout)
|
566
|
+
def inner_text(selector, strict: nil, timeout: nil)
|
567
|
+
@main_frame.inner_text(selector, strict: strict, timeout: timeout)
|
527
568
|
end
|
528
569
|
|
529
|
-
def inner_html(selector, timeout: nil)
|
530
|
-
@main_frame.inner_html(selector, timeout: timeout)
|
570
|
+
def inner_html(selector, strict: nil, timeout: nil)
|
571
|
+
@main_frame.inner_html(selector, strict: strict, timeout: timeout)
|
531
572
|
end
|
532
573
|
|
533
|
-
def get_attribute(selector, name, timeout: nil)
|
534
|
-
@main_frame.get_attribute(selector, name, timeout: timeout)
|
574
|
+
def get_attribute(selector, name, strict: nil, timeout: nil)
|
575
|
+
@main_frame.get_attribute(selector, name, strict: strict, timeout: timeout)
|
535
576
|
end
|
536
577
|
|
537
578
|
def hover(
|
@@ -539,6 +580,7 @@ module Playwright
|
|
539
580
|
force: nil,
|
540
581
|
modifiers: nil,
|
541
582
|
position: nil,
|
583
|
+
strict: nil,
|
542
584
|
timeout: nil,
|
543
585
|
trial: nil)
|
544
586
|
@main_frame.hover(
|
@@ -546,6 +588,7 @@ module Playwright
|
|
546
588
|
force: force,
|
547
589
|
modifiers: modifiers,
|
548
590
|
position: position,
|
591
|
+
strict: strict,
|
549
592
|
timeout: timeout,
|
550
593
|
trial: trial,
|
551
594
|
)
|
@@ -559,6 +602,7 @@ module Playwright
|
|
559
602
|
label: nil,
|
560
603
|
force: nil,
|
561
604
|
noWaitAfter: nil,
|
605
|
+
strict: nil,
|
562
606
|
timeout: nil)
|
563
607
|
@main_frame.select_option(
|
564
608
|
selector,
|
@@ -568,16 +612,22 @@ module Playwright
|
|
568
612
|
label: label,
|
569
613
|
force: force,
|
570
614
|
noWaitAfter: noWaitAfter,
|
615
|
+
strict: strict,
|
571
616
|
timeout: timeout,
|
572
617
|
)
|
573
618
|
end
|
574
619
|
|
575
|
-
def input_value(selector, timeout: nil)
|
576
|
-
@main_frame.input_value(selector, timeout: timeout)
|
620
|
+
def input_value(selector, strict: nil, timeout: nil)
|
621
|
+
@main_frame.input_value(selector, strict: strict, timeout: timeout)
|
577
622
|
end
|
578
623
|
|
579
|
-
def set_input_files(selector, files, noWaitAfter: nil, timeout: nil)
|
580
|
-
@main_frame.set_input_files(
|
624
|
+
def set_input_files(selector, files, noWaitAfter: nil, strict: nil,timeout: nil)
|
625
|
+
@main_frame.set_input_files(
|
626
|
+
selector,
|
627
|
+
files,
|
628
|
+
noWaitAfter: noWaitAfter,
|
629
|
+
strict: strict,
|
630
|
+
timeout: timeout)
|
581
631
|
end
|
582
632
|
|
583
633
|
def type(
|
@@ -585,9 +635,16 @@ module Playwright
|
|
585
635
|
text,
|
586
636
|
delay: nil,
|
587
637
|
noWaitAfter: nil,
|
638
|
+
strict: nil,
|
588
639
|
timeout: nil)
|
589
640
|
|
590
|
-
@main_frame.type(
|
641
|
+
@main_frame.type(
|
642
|
+
selector,
|
643
|
+
text,
|
644
|
+
delay: delay,
|
645
|
+
noWaitAfter: noWaitAfter,
|
646
|
+
strict: strict,
|
647
|
+
timeout: timeout)
|
591
648
|
end
|
592
649
|
|
593
650
|
def press(
|
@@ -595,9 +652,16 @@ module Playwright
|
|
595
652
|
key,
|
596
653
|
delay: nil,
|
597
654
|
noWaitAfter: nil,
|
655
|
+
strict: nil,
|
598
656
|
timeout: nil)
|
599
657
|
|
600
|
-
@main_frame.press(
|
658
|
+
@main_frame.press(
|
659
|
+
selector,
|
660
|
+
key,
|
661
|
+
delay: delay,
|
662
|
+
noWaitAfter: noWaitAfter,
|
663
|
+
strict: strict,
|
664
|
+
timeout: timeout)
|
601
665
|
end
|
602
666
|
|
603
667
|
def check(
|
@@ -605,10 +669,18 @@ module Playwright
|
|
605
669
|
force: nil,
|
606
670
|
noWaitAfter: nil,
|
607
671
|
position: nil,
|
672
|
+
strict: nil,
|
608
673
|
timeout: nil,
|
609
674
|
trial: nil)
|
610
675
|
|
611
|
-
@main_frame.check(
|
676
|
+
@main_frame.check(
|
677
|
+
selector,
|
678
|
+
force: force,
|
679
|
+
noWaitAfter: noWaitAfter,
|
680
|
+
position: position,
|
681
|
+
strict: strict,
|
682
|
+
timeout: timeout,
|
683
|
+
trial: trial)
|
612
684
|
end
|
613
685
|
|
614
686
|
def uncheck(
|
@@ -616,16 +688,36 @@ module Playwright
|
|
616
688
|
force: nil,
|
617
689
|
noWaitAfter: nil,
|
618
690
|
position: nil,
|
691
|
+
strict: nil,
|
619
692
|
timeout: nil,
|
620
693
|
trial: nil)
|
621
694
|
|
622
|
-
@main_frame.uncheck(
|
695
|
+
@main_frame.uncheck(
|
696
|
+
selector,
|
697
|
+
force: force,
|
698
|
+
noWaitAfter: noWaitAfter,
|
699
|
+
position: position,
|
700
|
+
strict: strict,
|
701
|
+
timeout: timeout,
|
702
|
+
trial: trial)
|
703
|
+
end
|
704
|
+
|
705
|
+
def wait_for_timeout(timeout)
|
706
|
+
@main_frame.wait_for_timeout(timeout)
|
623
707
|
end
|
624
708
|
|
625
709
|
def wait_for_function(pageFunction, arg: nil, polling: nil, timeout: nil)
|
626
710
|
@main_frame.wait_for_function(pageFunction, arg: arg, polling: polling, timeout: timeout)
|
627
711
|
end
|
628
712
|
|
713
|
+
def workers
|
714
|
+
@workers.to_a
|
715
|
+
end
|
716
|
+
|
717
|
+
def pause
|
718
|
+
@browser_context.send(:pause)
|
719
|
+
end
|
720
|
+
|
629
721
|
def pdf(
|
630
722
|
displayHeaderFooter: nil,
|
631
723
|
footerTemplate: nil,
|
@@ -759,7 +851,7 @@ module Playwright
|
|
759
851
|
predicate =
|
760
852
|
case urlOrPredicate
|
761
853
|
when String, Regexp
|
762
|
-
url_matcher = UrlMatcher.new(urlOrPredicate)
|
854
|
+
url_matcher = UrlMatcher.new(urlOrPredicate, base_url: @browser_context.send(:base_url))
|
763
855
|
-> (req){ url_matcher.match?(req.url) }
|
764
856
|
when Proc
|
765
857
|
urlOrPredicate
|
@@ -778,7 +870,7 @@ module Playwright
|
|
778
870
|
predicate =
|
779
871
|
case urlOrPredicate
|
780
872
|
when String, Regexp
|
781
|
-
url_matcher = UrlMatcher.new(urlOrPredicate)
|
873
|
+
url_matcher = UrlMatcher.new(urlOrPredicate, base_url: @browser_context.send(:base_url))
|
782
874
|
-> (req){ url_matcher.match?(req.url) }
|
783
875
|
when Proc
|
784
876
|
urlOrPredicate
|
@@ -793,6 +885,10 @@ module Playwright
|
|
793
885
|
expect_event(Events::Page::WebSocket, predicate: predicate, timeout: timeout, &block)
|
794
886
|
end
|
795
887
|
|
888
|
+
def expect_worker(predicate: nil, timeout: nil, &block)
|
889
|
+
expect_event(Events::Page::Worker, predicate: predicate, timeout: timeout, &block)
|
890
|
+
end
|
891
|
+
|
796
892
|
# called from Frame with send(:timeout_settings)
|
797
893
|
private def timeout_settings
|
798
894
|
@timeout_settings
|
@@ -803,6 +899,11 @@ module Playwright
|
|
803
899
|
@bindings.key?(name)
|
804
900
|
end
|
805
901
|
|
902
|
+
# called from Worker#on_close
|
903
|
+
private def remove_worker(worker)
|
904
|
+
@workers.delete(worker)
|
905
|
+
end
|
906
|
+
|
806
907
|
# Expose guid for library developers.
|
807
908
|
# Not intended to be used by users.
|
808
909
|
def guid
|