playwright-ruby-client 1.42.0 → 1.43.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 +2 -2
- data/documentation/docs/api/browser_context.md +22 -10
- data/documentation/docs/api/frame_locator.md +26 -4
- data/documentation/docs/api/locator.md +22 -0
- data/documentation/docs/api/page.md +10 -8
- data/documentation/docs/article/guides/download_playwright_driver.md +7 -10
- data/documentation/docs/article/guides/playwright_on_alpine_linux.md +3 -1
- data/documentation/docs/include/api_coverage.md +2 -0
- data/documentation/docusaurus.config.js +6 -0
- data/documentation/package.json +2 -2
- data/documentation/yarn.lock +1732 -1815
- data/lib/playwright/channel_owners/browser_context.rb +31 -2
- data/lib/playwright/channel_owners/js_handle.rb +4 -0
- data/lib/playwright/channel_owners/request.rb +1 -1
- data/lib/playwright/connection.rb +3 -0
- data/lib/playwright/frame_locator_impl.rb +8 -0
- data/lib/playwright/locator_impl.rb +8 -0
- data/lib/playwright/transport.rb +6 -0
- data/lib/playwright/version.rb +2 -2
- data/lib/playwright/waiter.rb +4 -6
- data/lib/playwright/web_socket_transport.rb +8 -0
- data/lib/playwright.rb +1 -1
- data/lib/playwright_api/android.rb +6 -6
- data/lib/playwright_api/android_device.rb +6 -6
- data/lib/playwright_api/api_request_context.rb +6 -6
- data/lib/playwright_api/browser.rb +6 -6
- data/lib/playwright_api/browser_context.rb +24 -14
- data/lib/playwright_api/browser_type.rb +6 -6
- data/lib/playwright_api/cdp_session.rb +6 -6
- data/lib/playwright_api/dialog.rb +6 -6
- data/lib/playwright_api/element_handle.rb +6 -6
- data/lib/playwright_api/frame.rb +6 -6
- data/lib/playwright_api/frame_locator.rb +23 -4
- data/lib/playwright_api/js_handle.rb +6 -6
- data/lib/playwright_api/locator.rb +19 -0
- data/lib/playwright_api/page.rb +26 -22
- 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 -6
- data/lib/playwright_api/selectors.rb +6 -6
- data/lib/playwright_api/tracing.rb +6 -6
- data/lib/playwright_api/web_socket.rb +6 -6
- data/lib/playwright_api/worker.rb +6 -6
- data/sig/playwright.rbs +3 -1
- metadata +3 -3
@@ -267,8 +267,37 @@ module Playwright
|
|
267
267
|
@channel.send_message_to_server('addCookies', cookies: cookies)
|
268
268
|
end
|
269
269
|
|
270
|
-
def clear_cookies
|
271
|
-
|
270
|
+
def clear_cookies(domain: nil, name: nil, path: nil)
|
271
|
+
params = {}
|
272
|
+
|
273
|
+
case name
|
274
|
+
when String
|
275
|
+
params[:name] = name
|
276
|
+
when Regexp
|
277
|
+
regex = JavaScript::Regex.new(name)
|
278
|
+
params[:nameRegexSource] = regex.source
|
279
|
+
params[:nameRegexFlags] = regex.flag
|
280
|
+
end
|
281
|
+
|
282
|
+
case domain
|
283
|
+
when String
|
284
|
+
params[:domain] = domain
|
285
|
+
when Regexp
|
286
|
+
regex = JavaScript::Regex.new(domain)
|
287
|
+
params[:domainRegexSource] = regex.source
|
288
|
+
params[:domainRegexFlags] = regex.flag
|
289
|
+
end
|
290
|
+
|
291
|
+
case path
|
292
|
+
when String
|
293
|
+
params[:path] = path
|
294
|
+
when Regexp
|
295
|
+
regex = JavaScript::Regex.new(path)
|
296
|
+
params[:pathRegexSource] = regex.source
|
297
|
+
params[:pathRegexFlags] = regex.flag
|
298
|
+
end
|
299
|
+
|
300
|
+
@channel.send_message_to_server('clearCookies', params)
|
272
301
|
end
|
273
302
|
|
274
303
|
def grant_permissions(permissions, origin: nil)
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module Playwright
|
2
2
|
define_channel_owner :JSHandle do
|
3
|
+
include Utils::Errors::TargetClosedErrorMethods
|
4
|
+
|
3
5
|
private def after_initialize
|
4
6
|
@preview = @initializer['preview']
|
5
7
|
@channel.on('previewUpdated', method(:on_preview_updated))
|
@@ -37,6 +39,8 @@ module Playwright
|
|
37
39
|
|
38
40
|
def dispose
|
39
41
|
@channel.send_message_to_server('dispose')
|
42
|
+
rescue => err
|
43
|
+
raise if !target_closed_error?(err)
|
40
44
|
end
|
41
45
|
|
42
46
|
def json_value
|
@@ -62,7 +62,7 @@ module Playwright
|
|
62
62
|
content_type = headers['content-type']
|
63
63
|
return unless content_type
|
64
64
|
|
65
|
-
if content_type
|
65
|
+
if content_type.include?("application/x-www-form-urlencoded")
|
66
66
|
URI.decode_www_form(data).to_h
|
67
67
|
else
|
68
68
|
JSON.parse(data)
|
@@ -26,6 +26,14 @@ module Playwright
|
|
26
26
|
hasText: hasText)
|
27
27
|
end
|
28
28
|
|
29
|
+
def owner
|
30
|
+
LocatorImpl.new(
|
31
|
+
frame: @frame,
|
32
|
+
timeout_settings: @timeout_settings,
|
33
|
+
selector: @frame_selector,
|
34
|
+
)
|
35
|
+
end
|
36
|
+
|
29
37
|
def frame_locator(selector)
|
30
38
|
FrameLocatorImpl.new(
|
31
39
|
frame: @frame,
|
@@ -233,6 +233,14 @@ module Playwright
|
|
233
233
|
@frame.query_selector_all(@selector)
|
234
234
|
end
|
235
235
|
|
236
|
+
def content_frame
|
237
|
+
FrameLocatorImpl.new(
|
238
|
+
frame: @frame,
|
239
|
+
timeout_settings: @timeout_settings,
|
240
|
+
frame_selector: @selector,
|
241
|
+
)
|
242
|
+
end
|
243
|
+
|
236
244
|
def filter(has: nil, hasNot: nil, hasNotText: nil, hasText: nil)
|
237
245
|
LocatorImpl.new(
|
238
246
|
frame: @frame,
|
data/lib/playwright/transport.rb
CHANGED
@@ -18,6 +18,10 @@ module Playwright
|
|
18
18
|
@on_message = block
|
19
19
|
end
|
20
20
|
|
21
|
+
def on_driver_closed(&block)
|
22
|
+
@on_driver_closed = block
|
23
|
+
end
|
24
|
+
|
21
25
|
def on_driver_crashed(&block)
|
22
26
|
@on_driver_crashed = block
|
23
27
|
end
|
@@ -83,6 +87,7 @@ module Playwright
|
|
83
87
|
end
|
84
88
|
rescue IOError
|
85
89
|
# disconnected by remote.
|
90
|
+
@on_driver_closed&.call
|
86
91
|
end
|
87
92
|
|
88
93
|
def handle_stderr
|
@@ -106,6 +111,7 @@ module Playwright
|
|
106
111
|
end
|
107
112
|
rescue IOError
|
108
113
|
# disconnected by remote.
|
114
|
+
@on_driver_closed&.call
|
109
115
|
end
|
110
116
|
|
111
117
|
def debug_send_message(message)
|
data/lib/playwright/version.rb
CHANGED
data/lib/playwright/waiter.rb
CHANGED
@@ -81,19 +81,17 @@ module Playwright
|
|
81
81
|
|
82
82
|
private def fulfill(result)
|
83
83
|
cleanup
|
84
|
-
|
85
|
-
|
86
|
-
end
|
84
|
+
return if @result.resolved?
|
85
|
+
@result.fulfill(result)
|
87
86
|
wait_for_event_info_after
|
88
87
|
end
|
89
88
|
|
90
89
|
private def reject(error)
|
91
90
|
cleanup
|
91
|
+
return if @result.resolved?
|
92
92
|
klass = error.is_a?(TimeoutError) ? TimeoutError : Error
|
93
93
|
ex = klass.new(message: "#{error.message}#{format_log_recording(@logs)}")
|
94
|
-
|
95
|
-
@result.reject(ex)
|
96
|
-
end
|
94
|
+
@result.reject(ex)
|
97
95
|
wait_for_event_info_after(error: ex)
|
98
96
|
end
|
99
97
|
|
@@ -15,6 +15,10 @@ module Playwright
|
|
15
15
|
@on_message = block
|
16
16
|
end
|
17
17
|
|
18
|
+
def on_driver_closed(&block)
|
19
|
+
@on_driver_closed = block
|
20
|
+
end
|
21
|
+
|
18
22
|
def on_driver_crashed(&block)
|
19
23
|
@on_driver_crashed = block
|
20
24
|
end
|
@@ -76,6 +80,10 @@ module Playwright
|
|
76
80
|
|
77
81
|
ws.start
|
78
82
|
@ws = promise.value!
|
83
|
+
@ws.on_close do |reason, code|
|
84
|
+
puts "[WebSocketTransport] closed with code: #{code}, reason: #{reason}"
|
85
|
+
@on_driver_closed&.call(reason, code)
|
86
|
+
end
|
79
87
|
@ws.on_error do |error|
|
80
88
|
puts "[WebSocketTransport] error: #{error}"
|
81
89
|
@on_driver_crashed&.call
|
data/lib/playwright.rb
CHANGED
@@ -181,7 +181,7 @@ module Playwright
|
|
181
181
|
|
182
182
|
# Connects to Playwright server, launched by `npx playwright launch-server chromium` or `playwright.chromium.launchServer()`
|
183
183
|
#
|
184
|
-
# Playwright.
|
184
|
+
# Playwright.connect_to_android_server('ws://....') do |browser|
|
185
185
|
# page = browser.new_page
|
186
186
|
# ...
|
187
187
|
# end
|
@@ -40,20 +40,20 @@ module Playwright
|
|
40
40
|
|
41
41
|
# -- inherited from EventEmitter --
|
42
42
|
# @nodoc
|
43
|
-
def
|
44
|
-
event_emitter_proxy.
|
43
|
+
def on(event, callback)
|
44
|
+
event_emitter_proxy.on(event, callback)
|
45
45
|
end
|
46
46
|
|
47
47
|
# -- inherited from EventEmitter --
|
48
48
|
# @nodoc
|
49
|
-
def
|
50
|
-
event_emitter_proxy.
|
49
|
+
def off(event, callback)
|
50
|
+
event_emitter_proxy.off(event, callback)
|
51
51
|
end
|
52
52
|
|
53
53
|
# -- inherited from EventEmitter --
|
54
54
|
# @nodoc
|
55
|
-
def
|
56
|
-
event_emitter_proxy.
|
55
|
+
def once(event, callback)
|
56
|
+
event_emitter_proxy.once(event, callback)
|
57
57
|
end
|
58
58
|
|
59
59
|
private def event_emitter_proxy
|
@@ -205,20 +205,20 @@ module Playwright
|
|
205
205
|
|
206
206
|
# -- inherited from EventEmitter --
|
207
207
|
# @nodoc
|
208
|
-
def
|
209
|
-
event_emitter_proxy.
|
208
|
+
def on(event, callback)
|
209
|
+
event_emitter_proxy.on(event, callback)
|
210
210
|
end
|
211
211
|
|
212
212
|
# -- inherited from EventEmitter --
|
213
213
|
# @nodoc
|
214
|
-
def
|
215
|
-
event_emitter_proxy.
|
214
|
+
def off(event, callback)
|
215
|
+
event_emitter_proxy.off(event, callback)
|
216
216
|
end
|
217
217
|
|
218
218
|
# -- inherited from EventEmitter --
|
219
219
|
# @nodoc
|
220
|
-
def
|
221
|
-
event_emitter_proxy.
|
220
|
+
def once(event, callback)
|
221
|
+
event_emitter_proxy.once(event, callback)
|
222
222
|
end
|
223
223
|
|
224
224
|
private def event_emitter_proxy
|
@@ -280,20 +280,20 @@ module Playwright
|
|
280
280
|
|
281
281
|
# -- inherited from EventEmitter --
|
282
282
|
# @nodoc
|
283
|
-
def
|
284
|
-
event_emitter_proxy.
|
283
|
+
def on(event, callback)
|
284
|
+
event_emitter_proxy.on(event, callback)
|
285
285
|
end
|
286
286
|
|
287
287
|
# -- inherited from EventEmitter --
|
288
288
|
# @nodoc
|
289
|
-
def
|
290
|
-
event_emitter_proxy.
|
289
|
+
def off(event, callback)
|
290
|
+
event_emitter_proxy.off(event, callback)
|
291
291
|
end
|
292
292
|
|
293
293
|
# -- inherited from EventEmitter --
|
294
294
|
# @nodoc
|
295
|
-
def
|
296
|
-
event_emitter_proxy.
|
295
|
+
def once(event, callback)
|
296
|
+
event_emitter_proxy.once(event, callback)
|
297
297
|
end
|
298
298
|
|
299
299
|
private def event_emitter_proxy
|
@@ -202,20 +202,20 @@ module Playwright
|
|
202
202
|
|
203
203
|
# -- inherited from EventEmitter --
|
204
204
|
# @nodoc
|
205
|
-
def
|
206
|
-
event_emitter_proxy.
|
205
|
+
def on(event, callback)
|
206
|
+
event_emitter_proxy.on(event, callback)
|
207
207
|
end
|
208
208
|
|
209
209
|
# -- inherited from EventEmitter --
|
210
210
|
# @nodoc
|
211
|
-
def
|
212
|
-
event_emitter_proxy.
|
211
|
+
def off(event, callback)
|
212
|
+
event_emitter_proxy.off(event, callback)
|
213
213
|
end
|
214
214
|
|
215
215
|
# -- inherited from EventEmitter --
|
216
216
|
# @nodoc
|
217
|
-
def
|
218
|
-
event_emitter_proxy.
|
217
|
+
def once(event, callback)
|
218
|
+
event_emitter_proxy.once(event, callback)
|
219
219
|
end
|
220
220
|
|
221
221
|
private def event_emitter_proxy
|
@@ -81,9 +81,19 @@ module Playwright
|
|
81
81
|
end
|
82
82
|
|
83
83
|
#
|
84
|
-
#
|
85
|
-
|
86
|
-
|
84
|
+
# Removes cookies from context. Accepts optional filter.
|
85
|
+
#
|
86
|
+
# **Usage**
|
87
|
+
#
|
88
|
+
# ```python sync
|
89
|
+
# context.clear_cookies()
|
90
|
+
# context.clear_cookies(name="session-id")
|
91
|
+
# context.clear_cookies(domain="my-origin.com")
|
92
|
+
# context.clear_cookies(path="/api/v1")
|
93
|
+
# context.clear_cookies(name="session-id", domain="my-origin.com")
|
94
|
+
# ```
|
95
|
+
def clear_cookies(domain: nil, name: nil, path: nil)
|
96
|
+
wrap_impl(@impl.clear_cookies(domain: unwrap_impl(domain), name: unwrap_impl(name), path: unwrap_impl(path)))
|
87
97
|
end
|
88
98
|
|
89
99
|
#
|
@@ -438,6 +448,11 @@ module Playwright
|
|
438
448
|
raise NotImplementedError.new('wait_for_event is not implemented yet.')
|
439
449
|
end
|
440
450
|
|
451
|
+
# @nodoc
|
452
|
+
def owner_page=(req)
|
453
|
+
wrap_impl(@impl.owner_page=(unwrap_impl(req)))
|
454
|
+
end
|
455
|
+
|
441
456
|
# @nodoc
|
442
457
|
def pause
|
443
458
|
wrap_impl(@impl.pause)
|
@@ -448,11 +463,6 @@ module Playwright
|
|
448
463
|
wrap_impl(@impl.options=(unwrap_impl(req)))
|
449
464
|
end
|
450
465
|
|
451
|
-
# @nodoc
|
452
|
-
def owner_page=(req)
|
453
|
-
wrap_impl(@impl.owner_page=(unwrap_impl(req)))
|
454
|
-
end
|
455
|
-
|
456
466
|
# @nodoc
|
457
467
|
def enable_debug_console!
|
458
468
|
wrap_impl(@impl.enable_debug_console!)
|
@@ -465,20 +475,20 @@ module Playwright
|
|
465
475
|
|
466
476
|
# -- inherited from EventEmitter --
|
467
477
|
# @nodoc
|
468
|
-
def
|
469
|
-
event_emitter_proxy.
|
478
|
+
def on(event, callback)
|
479
|
+
event_emitter_proxy.on(event, callback)
|
470
480
|
end
|
471
481
|
|
472
482
|
# -- inherited from EventEmitter --
|
473
483
|
# @nodoc
|
474
|
-
def
|
475
|
-
event_emitter_proxy.
|
484
|
+
def off(event, callback)
|
485
|
+
event_emitter_proxy.off(event, callback)
|
476
486
|
end
|
477
487
|
|
478
488
|
# -- inherited from EventEmitter --
|
479
489
|
# @nodoc
|
480
|
-
def
|
481
|
-
event_emitter_proxy.
|
490
|
+
def once(event, callback)
|
491
|
+
event_emitter_proxy.once(event, callback)
|
482
492
|
end
|
483
493
|
|
484
494
|
private def event_emitter_proxy
|
@@ -176,20 +176,20 @@ module Playwright
|
|
176
176
|
|
177
177
|
# -- inherited from EventEmitter --
|
178
178
|
# @nodoc
|
179
|
-
def
|
180
|
-
event_emitter_proxy.
|
179
|
+
def on(event, callback)
|
180
|
+
event_emitter_proxy.on(event, callback)
|
181
181
|
end
|
182
182
|
|
183
183
|
# -- inherited from EventEmitter --
|
184
184
|
# @nodoc
|
185
|
-
def
|
186
|
-
event_emitter_proxy.
|
185
|
+
def off(event, callback)
|
186
|
+
event_emitter_proxy.off(event, callback)
|
187
187
|
end
|
188
188
|
|
189
189
|
# -- inherited from EventEmitter --
|
190
190
|
# @nodoc
|
191
|
-
def
|
192
|
-
event_emitter_proxy.
|
191
|
+
def once(event, callback)
|
192
|
+
event_emitter_proxy.once(event, callback)
|
193
193
|
end
|
194
194
|
|
195
195
|
private def event_emitter_proxy
|
@@ -34,20 +34,20 @@ module Playwright
|
|
34
34
|
|
35
35
|
# -- inherited from EventEmitter --
|
36
36
|
# @nodoc
|
37
|
-
def
|
38
|
-
event_emitter_proxy.
|
37
|
+
def on(event, callback)
|
38
|
+
event_emitter_proxy.on(event, callback)
|
39
39
|
end
|
40
40
|
|
41
41
|
# -- inherited from EventEmitter --
|
42
42
|
# @nodoc
|
43
|
-
def
|
44
|
-
event_emitter_proxy.
|
43
|
+
def off(event, callback)
|
44
|
+
event_emitter_proxy.off(event, callback)
|
45
45
|
end
|
46
46
|
|
47
47
|
# -- inherited from EventEmitter --
|
48
48
|
# @nodoc
|
49
|
-
def
|
50
|
-
event_emitter_proxy.
|
49
|
+
def once(event, callback)
|
50
|
+
event_emitter_proxy.once(event, callback)
|
51
51
|
end
|
52
52
|
|
53
53
|
private def event_emitter_proxy
|
@@ -70,20 +70,20 @@ module Playwright
|
|
70
70
|
|
71
71
|
# -- inherited from EventEmitter --
|
72
72
|
# @nodoc
|
73
|
-
def
|
74
|
-
event_emitter_proxy.
|
73
|
+
def on(event, callback)
|
74
|
+
event_emitter_proxy.on(event, callback)
|
75
75
|
end
|
76
76
|
|
77
77
|
# -- inherited from EventEmitter --
|
78
78
|
# @nodoc
|
79
|
-
def
|
80
|
-
event_emitter_proxy.
|
79
|
+
def off(event, callback)
|
80
|
+
event_emitter_proxy.off(event, callback)
|
81
81
|
end
|
82
82
|
|
83
83
|
# -- inherited from EventEmitter --
|
84
84
|
# @nodoc
|
85
|
-
def
|
86
|
-
event_emitter_proxy.
|
85
|
+
def once(event, callback)
|
86
|
+
event_emitter_proxy.once(event, callback)
|
87
87
|
end
|
88
88
|
|
89
89
|
private def event_emitter_proxy
|
@@ -575,20 +575,20 @@ module Playwright
|
|
575
575
|
|
576
576
|
# -- inherited from EventEmitter --
|
577
577
|
# @nodoc
|
578
|
-
def
|
579
|
-
event_emitter_proxy.
|
578
|
+
def on(event, callback)
|
579
|
+
event_emitter_proxy.on(event, callback)
|
580
580
|
end
|
581
581
|
|
582
582
|
# -- inherited from EventEmitter --
|
583
583
|
# @nodoc
|
584
|
-
def
|
585
|
-
event_emitter_proxy.
|
584
|
+
def off(event, callback)
|
585
|
+
event_emitter_proxy.off(event, callback)
|
586
586
|
end
|
587
587
|
|
588
588
|
# -- inherited from EventEmitter --
|
589
589
|
# @nodoc
|
590
|
-
def
|
591
|
-
event_emitter_proxy.
|
590
|
+
def once(event, callback)
|
591
|
+
event_emitter_proxy.once(event, callback)
|
592
592
|
end
|
593
593
|
|
594
594
|
private def event_emitter_proxy
|
data/lib/playwright_api/frame.rb
CHANGED
@@ -1049,20 +1049,20 @@ module Playwright
|
|
1049
1049
|
|
1050
1050
|
# -- inherited from EventEmitter --
|
1051
1051
|
# @nodoc
|
1052
|
-
def
|
1053
|
-
event_emitter_proxy.
|
1052
|
+
def on(event, callback)
|
1053
|
+
event_emitter_proxy.on(event, callback)
|
1054
1054
|
end
|
1055
1055
|
|
1056
1056
|
# -- inherited from EventEmitter --
|
1057
1057
|
# @nodoc
|
1058
|
-
def
|
1059
|
-
event_emitter_proxy.
|
1058
|
+
def off(event, callback)
|
1059
|
+
event_emitter_proxy.off(event, callback)
|
1060
1060
|
end
|
1061
1061
|
|
1062
1062
|
# -- inherited from EventEmitter --
|
1063
1063
|
# @nodoc
|
1064
|
-
def
|
1065
|
-
event_emitter_proxy.
|
1064
|
+
def once(event, callback)
|
1065
|
+
event_emitter_proxy.once(event, callback)
|
1066
1066
|
end
|
1067
1067
|
|
1068
1068
|
private def event_emitter_proxy
|
@@ -21,11 +21,11 @@ module Playwright
|
|
21
21
|
#
|
22
22
|
# **Converting Locator to FrameLocator**
|
23
23
|
#
|
24
|
-
# If you have a `Locator` object pointing to an `iframe` it can be converted to `FrameLocator` using [
|
24
|
+
# If you have a `Locator` object pointing to an `iframe` it can be converted to `FrameLocator` using [`method: Locator.contentFrame`].
|
25
25
|
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
26
|
+
# **Converting FrameLocator to Locator**
|
27
|
+
#
|
28
|
+
# If you have a `FrameLocator` object it can be converted to `Locator` pointing to the same `iframe` using [`method: FrameLocator.owner`].
|
29
29
|
class FrameLocator < PlaywrightApi
|
30
30
|
|
31
31
|
#
|
@@ -255,5 +255,24 @@ module Playwright
|
|
255
255
|
def nth(index)
|
256
256
|
wrap_impl(@impl.nth(unwrap_impl(index)))
|
257
257
|
end
|
258
|
+
|
259
|
+
#
|
260
|
+
# Returns a `Locator` object pointing to the same `iframe` as this frame locator.
|
261
|
+
#
|
262
|
+
# Useful when you have a `FrameLocator` object obtained somewhere, and later on would like to interact with the `iframe` element.
|
263
|
+
#
|
264
|
+
# For a reverse operation, use [`method: Locator.contentFrame`].
|
265
|
+
#
|
266
|
+
# **Usage**
|
267
|
+
#
|
268
|
+
# ```python sync
|
269
|
+
# frame_locator = page.frame_locator("iframe[name=\"embedded\"]")
|
270
|
+
# # ...
|
271
|
+
# locator = frame_locator.owner
|
272
|
+
# expect(locator).to_be_visible()
|
273
|
+
# ```
|
274
|
+
def owner
|
275
|
+
wrap_impl(@impl.owner)
|
276
|
+
end
|
258
277
|
end
|
259
278
|
end
|
@@ -100,20 +100,20 @@ module Playwright
|
|
100
100
|
|
101
101
|
# -- inherited from EventEmitter --
|
102
102
|
# @nodoc
|
103
|
-
def
|
104
|
-
event_emitter_proxy.
|
103
|
+
def on(event, callback)
|
104
|
+
event_emitter_proxy.on(event, callback)
|
105
105
|
end
|
106
106
|
|
107
107
|
# -- inherited from EventEmitter --
|
108
108
|
# @nodoc
|
109
|
-
def
|
110
|
-
event_emitter_proxy.
|
109
|
+
def off(event, callback)
|
110
|
+
event_emitter_proxy.off(event, callback)
|
111
111
|
end
|
112
112
|
|
113
113
|
# -- inherited from EventEmitter --
|
114
114
|
# @nodoc
|
115
|
-
def
|
116
|
-
event_emitter_proxy.
|
115
|
+
def once(event, callback)
|
116
|
+
event_emitter_proxy.once(event, callback)
|
117
117
|
end
|
118
118
|
|
119
119
|
private def event_emitter_proxy
|
@@ -325,6 +325,25 @@ module Playwright
|
|
325
325
|
wrap_impl(@impl.element_handles)
|
326
326
|
end
|
327
327
|
|
328
|
+
#
|
329
|
+
# Returns a `FrameLocator` object pointing to the same `iframe` as this locator.
|
330
|
+
#
|
331
|
+
# Useful when you have a `Locator` object obtained somewhere, and later on would like to interact with the content inside the frame.
|
332
|
+
#
|
333
|
+
# For a reverse operation, use [`method: FrameLocator.owner`].
|
334
|
+
#
|
335
|
+
# **Usage**
|
336
|
+
#
|
337
|
+
# ```python sync
|
338
|
+
# locator = page.locator("iframe[name=\"embedded\"]")
|
339
|
+
# # ...
|
340
|
+
# frame_locator = locator.content_frame
|
341
|
+
# frame_locator.get_by_role("button").click()
|
342
|
+
# ```
|
343
|
+
def content_frame
|
344
|
+
wrap_impl(@impl.content_frame)
|
345
|
+
end
|
346
|
+
|
328
347
|
#
|
329
348
|
# Execute JavaScript code in the page, taking the matching element as an argument.
|
330
349
|
#
|