playwright-ruby-client 1.42.1 → 1.43.0
Sign up to get free protection for your applications and to get access to all the features.
- 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/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/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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e22c38ec1a50889adfbb6664dcb445db3635bcfd3d0240113f5b7250f5a16f91
|
4
|
+
data.tar.gz: 74f4b27cbc4d4e0b903c46621fa7dea13249d97b17bd780436fd5635d90f3e83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4201f5fa8a9353daecb78860b4a142a477c64b9634560b262faaea2c53491c0b5909ec3ada0e6ece917de08a91390b479a0aca34e7d607c0c14e9cf0999579a
|
7
|
+
data.tar.gz: 63968771197cee749d2780fa3f822f9e154088c0ea53062b86dda770f05704344a3f1f5dd696387d419252c2d1466a83e1ffbf8810ee25f069cf48c5662804ad
|
data/README.md
CHANGED
@@ -168,13 +168,13 @@ If your environment doesn't accept installing browser or creating browser proces
|
|
168
168
|
For launching Playwright server, just execute:
|
169
169
|
|
170
170
|
```
|
171
|
-
npx playwright install && npx playwright run-server --port 8080
|
171
|
+
npx playwright install && npx playwright run-server --port 8080 --path /ws
|
172
172
|
```
|
173
173
|
|
174
174
|
and we can connect to the server with the code like this:
|
175
175
|
|
176
176
|
```ruby
|
177
|
-
Playwright.connect_to_playwright_server('ws://127.0.0.1:8080') do |playwright|
|
177
|
+
Playwright.connect_to_playwright_server('ws://127.0.0.1:8080/ws?browser=chromium') do |playwright|
|
178
178
|
playwright.chromium.launch do |browser|
|
179
179
|
page = browser.new_page
|
180
180
|
page.goto('https://github.com/YusukeIwaki')
|
@@ -91,11 +91,21 @@ Returns the browser instance of the context. If it was launched as a persistent
|
|
91
91
|
## clear_cookies
|
92
92
|
|
93
93
|
```
|
94
|
-
def clear_cookies
|
94
|
+
def clear_cookies(domain: nil, name: nil, path: nil)
|
95
95
|
```
|
96
96
|
|
97
97
|
|
98
|
-
|
98
|
+
Removes cookies from context. Accepts optional filter.
|
99
|
+
|
100
|
+
**Usage**
|
101
|
+
|
102
|
+
```ruby
|
103
|
+
context.clear_cookies()
|
104
|
+
context.clear_cookies(name: "session-id")
|
105
|
+
context.clear_cookies(domain: "my-origin.com")
|
106
|
+
context.clear_cookies(path: "/api/v1")
|
107
|
+
context.clear_cookies(name: "session-id", domain: "my-origin.com")
|
108
|
+
```
|
99
109
|
|
100
110
|
## clear_permissions
|
101
111
|
|
@@ -311,14 +321,16 @@ page.goto("https://example.com")
|
|
311
321
|
|
312
322
|
It is possible to examine the request to decide the route action. For example, mocking all requests that contain some post data, and leaving all other requests as is:
|
313
323
|
|
314
|
-
```
|
315
|
-
def handle_route(route
|
316
|
-
if
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
324
|
+
```ruby
|
325
|
+
def handle_route(route, request)
|
326
|
+
if request.post_data["my-string"]
|
327
|
+
mocked_data = request.post_data.merge({ "my-string" => 'mocked-data'})
|
328
|
+
route.fulfill(postData: mocked_data)
|
329
|
+
else
|
330
|
+
route.continue
|
331
|
+
end
|
332
|
+
end
|
333
|
+
context.route("/api/**", method(:handle_route))
|
322
334
|
```
|
323
335
|
|
324
336
|
Page routes (set up with [Page#route](./page#route)) take precedence over browser context routes when request matches both
|
@@ -26,11 +26,11 @@ page.frame_locator('.result-frame').first.get_by_role('button').click
|
|
26
26
|
|
27
27
|
**Converting Locator to FrameLocator**
|
28
28
|
|
29
|
-
If you have a [Locator](./locator) object pointing to an `iframe` it can be converted to [FrameLocator](./frame_locator) using [
|
29
|
+
If you have a [Locator](./locator) object pointing to an `iframe` it can be converted to [FrameLocator](./frame_locator) using [Locator#content_frame](./locator#content_frame).
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
**Converting FrameLocator to Locator**
|
32
|
+
|
33
|
+
If you have a [FrameLocator](./frame_locator) object it can be converted to [Locator](./locator) pointing to the same `iframe` using [FrameLocator#owner](./frame_locator#owner).
|
34
34
|
|
35
35
|
## first
|
36
36
|
|
@@ -305,3 +305,25 @@ def nth(index)
|
|
305
305
|
|
306
306
|
|
307
307
|
Returns locator to the n-th matching frame. It's zero based, `nth(0)` selects the first frame.
|
308
|
+
|
309
|
+
## owner
|
310
|
+
|
311
|
+
```
|
312
|
+
def owner
|
313
|
+
```
|
314
|
+
|
315
|
+
|
316
|
+
Returns a [Locator](./locator) object pointing to the same `iframe` as this frame locator.
|
317
|
+
|
318
|
+
Useful when you have a [FrameLocator](./frame_locator) object obtained somewhere, and later on would like to interact with the `iframe` element.
|
319
|
+
|
320
|
+
For a reverse operation, use [Locator#content_frame](./locator#content_frame).
|
321
|
+
|
322
|
+
**Usage**
|
323
|
+
|
324
|
+
```ruby
|
325
|
+
frame_locator = page.frame_locator('iframe[name="embedded"]')
|
326
|
+
# ...
|
327
|
+
locator = frame_locator.owner
|
328
|
+
locator.get_attribute('src') # => frame1.html
|
329
|
+
```
|
@@ -377,6 +377,28 @@ def element_handles
|
|
377
377
|
|
378
378
|
Resolves given locator to all matching DOM elements. If there are no matching elements, returns an empty list.
|
379
379
|
|
380
|
+
## content_frame
|
381
|
+
|
382
|
+
```
|
383
|
+
def content_frame
|
384
|
+
```
|
385
|
+
|
386
|
+
|
387
|
+
Returns a [FrameLocator](./frame_locator) object pointing to the same `iframe` as this locator.
|
388
|
+
|
389
|
+
Useful when you have a [Locator](./locator) object obtained somewhere, and later on would like to interact with the content inside the frame.
|
390
|
+
|
391
|
+
For a reverse operation, use [FrameLocator#owner](./frame_locator#owner).
|
392
|
+
|
393
|
+
**Usage**
|
394
|
+
|
395
|
+
```ruby
|
396
|
+
locator = page.locator('iframe[name="embedded"]')
|
397
|
+
# ...
|
398
|
+
frame_locator = locator.content_frame
|
399
|
+
frame_locator.get_by_role("button").click
|
400
|
+
```
|
401
|
+
|
380
402
|
## evaluate
|
381
403
|
|
382
404
|
```
|
@@ -1246,14 +1246,16 @@ page.goto("https://example.com")
|
|
1246
1246
|
|
1247
1247
|
It is possible to examine the request to decide the route action. For example, mocking all requests that contain some post data, and leaving all other requests as is:
|
1248
1248
|
|
1249
|
-
```
|
1250
|
-
def handle_route(route
|
1251
|
-
if
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1249
|
+
```ruby
|
1250
|
+
def handle_route(route, request)
|
1251
|
+
if request.post_data["my-string"]
|
1252
|
+
mocked_data = request.post_data.merge({ "my-string" => 'mocked-data'})
|
1253
|
+
route.fulfill(postData: mocked_data)
|
1254
|
+
else
|
1255
|
+
route.continue
|
1256
|
+
end
|
1257
|
+
end
|
1258
|
+
page.route("/api/**", method(:handle_route))
|
1257
1259
|
```
|
1258
1260
|
|
1259
1261
|
Page routes take precedence over browser context routes (set up with [BrowserContext#route](./browser_context#route)) when request
|
@@ -8,16 +8,16 @@ sidebar_position: 1
|
|
8
8
|
|
9
9
|
Choose any of the three ways as you prefer to download the driver:
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
- `npx`: suitable for playground use, and not suitable for continuous usage.
|
12
|
+
- `npm install`: the best choice for most use cases, with existing Node.js environment.
|
13
|
+
- Direct download: maybe a good choice for Docker :whale: integration.
|
14
14
|
|
15
15
|
:::note
|
16
16
|
|
17
17
|
Also the article [Playwright on Alpine Linux](./playwright_on_alpine_linux) would be helpful if you plan to
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
- Build a browser server/container like Selenium Grid
|
20
|
+
- Run automation scripts on Alpine Linux
|
21
21
|
|
22
22
|
:::
|
23
23
|
|
@@ -29,7 +29,6 @@ $ npx playwright install
|
|
29
29
|
|
30
30
|
and then set `playwright_cli_executable_path: "npx playwright"` at `Playwright.create`.
|
31
31
|
|
32
|
-
|
33
32
|
## Using `npm install`
|
34
33
|
|
35
34
|
Actually `npx playwright` is a bit slow. We can also use `npm install` to setup.
|
@@ -44,15 +43,13 @@ $ ./node_modules/.bin/playwright install
|
|
44
43
|
|
45
44
|
and then set `playwright_cli_executable_path: './node_modules/.bin/playwright'`
|
46
45
|
|
47
|
-
|
48
46
|
## Directly download driver without Node.js installation.
|
49
47
|
|
50
|
-
Instead of npm, you can also directly download playwright driver from playwright.azureedge.net.
|
51
|
-
|
48
|
+
Instead of npm, you can also directly download playwright driver from playwright.azureedge.net. (The URL can be easily detected from [here](https://github.com/microsoft/playwright-python/blob/cfc1030a69d1e934cac579687a680eac53d4b9ee/setup.py#L75))
|
52
49
|
|
53
50
|
```shell
|
54
51
|
$ export PLAYWRIGHT_CLI_VERSION=$(bundle exec ruby -e 'puts Playwright::COMPATIBLE_PLAYWRIGHT_VERSION.strip')
|
55
52
|
$ wget https://playwright.azureedge.net/builds/driver/playwright-$PLAYWRIGHT_CLI_VERSION-linux.zip
|
56
53
|
```
|
57
54
|
|
58
|
-
and then extract it, and set `playwright_cli_executable_path: '/path/to/playwright-
|
55
|
+
and then extract it, and set `playwright_cli_executable_path: '/path/to/playwright-$PLAYWRIGHT_CLI_VERSION-linux/node /path/to/playwright-$PLAYWRIGHT_CLI_VERSION-linux/package/cli.js'`
|
@@ -62,7 +62,7 @@ Many example uses `Playwright#create`, which internally uses Pipe (stdin/stdout)
|
|
62
62
|
```ruby {3}
|
63
63
|
require 'playwright'
|
64
64
|
|
65
|
-
Playwright.connect_to_playwright_server('wss://example.com:8888/ws') do |playwright|
|
65
|
+
Playwright.connect_to_playwright_server('wss://example.com:8888/ws?browser=chromium') do |playwright|
|
66
66
|
playwright.chromium.launch do |browser|
|
67
67
|
page = browser.new_page
|
68
68
|
page.goto('https://github.com/microsoft/playwright')
|
@@ -73,6 +73,8 @@ end
|
|
73
73
|
|
74
74
|
`wss://example.com:8888/ws` is an example of endpoint URL of the Playwright server. In local development environment, it is typically `"ws://127.0.0.1:#{port}/ws"`.
|
75
75
|
|
76
|
+
Note that `?browser=chromium` is important for server to determine which browser to prepare.
|
77
|
+
|
76
78
|
### Server code
|
77
79
|
|
78
80
|
With the [official Docker image](https://hub.docker.com/_/microsoft-playwright) or in the local development environment with Node.js, just execute `npx playwright install && npx playwright run-server --port $PORT --path /ws`. (`$PORT` is a port number of the server)
|
@@ -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
@@ -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
|
#
|
data/lib/playwright_api/page.rb
CHANGED
@@ -1080,31 +1080,35 @@ module Playwright
|
|
1080
1080
|
end
|
1081
1081
|
|
1082
1082
|
#
|
1083
|
-
#
|
1083
|
+
# **NOTE**: This method is experimental and its behavior may change in the upcoming releases.
|
1084
1084
|
#
|
1085
|
-
#
|
1085
|
+
# When testing a web page, sometimes unexpected overlays like a "Sign up" dialog appear and block actions you want to automate, e.g. clicking a button. These overlays don't always show up in the same way or at the same time, making them tricky to handle in automated tests.
|
1086
1086
|
#
|
1087
|
-
#
|
1087
|
+
# This method lets you set up a special function, called a handler, that activates when it detects that overlay is visible. The handler's job is to remove the overlay, allowing your test to continue as if the overlay wasn't there.
|
1088
1088
|
#
|
1089
|
-
#
|
1089
|
+
# Things to keep in mind:
|
1090
|
+
# - When an overlay is shown predictably, we recommend explicitly waiting for it in your test and dismissing it as a part of your normal test flow, instead of using [`method: Page.addLocatorHandler`].
|
1091
|
+
# - Playwright checks for the overlay every time before executing or retrying an action that requires an [actionability check](../actionability.md), or before performing an auto-waiting assertion check. When overlay is visible, Playwright calls the handler first, and then proceeds with the action/assertion. Note that the handler is only called when you perform an action/assertion - if the overlay becomes visible but you don't perform any actions, the handler will not be triggered.
|
1092
|
+
# - The execution time of the handler counts towards the timeout of the action/assertion that executed the handler. If your handler takes too long, it might cause timeouts.
|
1093
|
+
# - You can register multiple handlers. However, only a single handler will be running at a time. Make sure the actions within a handler don't depend on another handler.
|
1090
1094
|
#
|
1091
|
-
# **NOTE**: Running the
|
1095
|
+
# **NOTE**: Running the handler will alter your page state mid-test. For example it will change the currently focused element and move the mouse. Make sure that actions that run after the handler are self-contained and do not rely on the focus and mouse state being unchanged.
|
1092
1096
|
# <br />
|
1093
1097
|
# <br />
|
1094
1098
|
# For example, consider a test that calls [`method: Locator.focus`] followed by [`method: Keyboard.press`]. If your handler clicks a button between these two actions, the focused element most likely will be wrong, and key press will happen on the unexpected element. Use [`method: Locator.press`] instead to avoid this problem.
|
1095
1099
|
# <br />
|
1096
1100
|
# <br />
|
1097
|
-
# Another example is a series of mouse actions, where [`method: Mouse.move`] is followed by [`method: Mouse.down`]. Again, when the handler runs between these two actions, the mouse position will be wrong during the mouse down. Prefer
|
1101
|
+
# Another example is a series of mouse actions, where [`method: Mouse.move`] is followed by [`method: Mouse.down`]. Again, when the handler runs between these two actions, the mouse position will be wrong during the mouse down. Prefer self-contained actions like [`method: Locator.click`] that do not rely on the state being unchanged by a handler.
|
1098
1102
|
#
|
1099
1103
|
# **Usage**
|
1100
1104
|
#
|
1101
|
-
# An example that closes a
|
1105
|
+
# An example that closes a "Sign up to the newsletter" dialog when it appears:
|
1102
1106
|
#
|
1103
1107
|
# ```python sync
|
1104
1108
|
# # Setup the handler.
|
1105
1109
|
# def handler():
|
1106
|
-
# page.get_by_role("button", name="
|
1107
|
-
# page.add_locator_handler(page.
|
1110
|
+
# page.get_by_role("button", name="No thanks").click()
|
1111
|
+
# page.add_locator_handler(page.get_by_text("Sign up to the newsletter"), handler)
|
1108
1112
|
#
|
1109
1113
|
# # Write the test as usual.
|
1110
1114
|
# page.goto("https://example.com")
|
@@ -1743,6 +1747,16 @@ module Playwright
|
|
1743
1747
|
raise NotImplementedError.new('wait_for_event is not implemented yet.')
|
1744
1748
|
end
|
1745
1749
|
|
1750
|
+
# @nodoc
|
1751
|
+
def owned_context=(req)
|
1752
|
+
wrap_impl(@impl.owned_context=(unwrap_impl(req)))
|
1753
|
+
end
|
1754
|
+
|
1755
|
+
# @nodoc
|
1756
|
+
def guid
|
1757
|
+
wrap_impl(@impl.guid)
|
1758
|
+
end
|
1759
|
+
|
1746
1760
|
# @nodoc
|
1747
1761
|
def start_css_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
|
1748
1762
|
wrap_impl(@impl.start_css_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
|
@@ -1763,14 +1777,10 @@ module Playwright
|
|
1763
1777
|
wrap_impl(@impl.stop_js_coverage)
|
1764
1778
|
end
|
1765
1779
|
|
1780
|
+
# -- inherited from EventEmitter --
|
1766
1781
|
# @nodoc
|
1767
|
-
def
|
1768
|
-
|
1769
|
-
end
|
1770
|
-
|
1771
|
-
# @nodoc
|
1772
|
-
def guid
|
1773
|
-
wrap_impl(@impl.guid)
|
1782
|
+
def on(event, callback)
|
1783
|
+
event_emitter_proxy.on(event, callback)
|
1774
1784
|
end
|
1775
1785
|
|
1776
1786
|
# -- inherited from EventEmitter --
|
@@ -1785,12 +1795,6 @@ module Playwright
|
|
1785
1795
|
event_emitter_proxy.once(event, callback)
|
1786
1796
|
end
|
1787
1797
|
|
1788
|
-
# -- inherited from EventEmitter --
|
1789
|
-
# @nodoc
|
1790
|
-
def on(event, callback)
|
1791
|
-
event_emitter_proxy.on(event, callback)
|
1792
|
-
end
|
1793
|
-
|
1794
1798
|
private def event_emitter_proxy
|
1795
1799
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
1796
1800
|
end
|
@@ -105,20 +105,20 @@ module Playwright
|
|
105
105
|
|
106
106
|
# -- inherited from EventEmitter --
|
107
107
|
# @nodoc
|
108
|
-
def
|
109
|
-
event_emitter_proxy.
|
108
|
+
def on(event, callback)
|
109
|
+
event_emitter_proxy.on(event, callback)
|
110
110
|
end
|
111
111
|
|
112
112
|
# -- inherited from EventEmitter --
|
113
113
|
# @nodoc
|
114
|
-
def
|
115
|
-
event_emitter_proxy.
|
114
|
+
def off(event, callback)
|
115
|
+
event_emitter_proxy.off(event, callback)
|
116
116
|
end
|
117
117
|
|
118
118
|
# -- inherited from EventEmitter --
|
119
119
|
# @nodoc
|
120
|
-
def
|
121
|
-
event_emitter_proxy.
|
120
|
+
def once(event, callback)
|
121
|
+
event_emitter_proxy.once(event, callback)
|
122
122
|
end
|
123
123
|
|
124
124
|
private def event_emitter_proxy
|
@@ -207,20 +207,20 @@ module Playwright
|
|
207
207
|
|
208
208
|
# -- inherited from EventEmitter --
|
209
209
|
# @nodoc
|
210
|
-
def
|
211
|
-
event_emitter_proxy.
|
210
|
+
def on(event, callback)
|
211
|
+
event_emitter_proxy.on(event, callback)
|
212
212
|
end
|
213
213
|
|
214
214
|
# -- inherited from EventEmitter --
|
215
215
|
# @nodoc
|
216
|
-
def
|
217
|
-
event_emitter_proxy.
|
216
|
+
def off(event, callback)
|
217
|
+
event_emitter_proxy.off(event, callback)
|
218
218
|
end
|
219
219
|
|
220
220
|
# -- inherited from EventEmitter --
|
221
221
|
# @nodoc
|
222
|
-
def
|
223
|
-
event_emitter_proxy.
|
222
|
+
def once(event, callback)
|
223
|
+
event_emitter_proxy.once(event, callback)
|
224
224
|
end
|
225
225
|
|
226
226
|
private def event_emitter_proxy
|
@@ -129,20 +129,20 @@ module Playwright
|
|
129
129
|
|
130
130
|
# -- inherited from EventEmitter --
|
131
131
|
# @nodoc
|
132
|
-
def
|
133
|
-
event_emitter_proxy.
|
132
|
+
def on(event, callback)
|
133
|
+
event_emitter_proxy.on(event, callback)
|
134
134
|
end
|
135
135
|
|
136
136
|
# -- inherited from EventEmitter --
|
137
137
|
# @nodoc
|
138
|
-
def
|
139
|
-
event_emitter_proxy.
|
138
|
+
def off(event, callback)
|
139
|
+
event_emitter_proxy.off(event, callback)
|
140
140
|
end
|
141
141
|
|
142
142
|
# -- inherited from EventEmitter --
|
143
143
|
# @nodoc
|
144
|
-
def
|
145
|
-
event_emitter_proxy.
|
144
|
+
def once(event, callback)
|
145
|
+
event_emitter_proxy.once(event, callback)
|
146
146
|
end
|
147
147
|
|
148
148
|
private def event_emitter_proxy
|
data/lib/playwright_api/route.rb
CHANGED
@@ -167,20 +167,20 @@ module Playwright
|
|
167
167
|
|
168
168
|
# -- inherited from EventEmitter --
|
169
169
|
# @nodoc
|
170
|
-
def
|
171
|
-
event_emitter_proxy.
|
170
|
+
def on(event, callback)
|
171
|
+
event_emitter_proxy.on(event, callback)
|
172
172
|
end
|
173
173
|
|
174
174
|
# -- inherited from EventEmitter --
|
175
175
|
# @nodoc
|
176
|
-
def
|
177
|
-
event_emitter_proxy.
|
176
|
+
def off(event, callback)
|
177
|
+
event_emitter_proxy.off(event, callback)
|
178
178
|
end
|
179
179
|
|
180
180
|
# -- inherited from EventEmitter --
|
181
181
|
# @nodoc
|
182
|
-
def
|
183
|
-
event_emitter_proxy.
|
182
|
+
def once(event, callback)
|
183
|
+
event_emitter_proxy.once(event, callback)
|
184
184
|
end
|
185
185
|
|
186
186
|
private def event_emitter_proxy
|
@@ -63,20 +63,20 @@ module Playwright
|
|
63
63
|
|
64
64
|
# -- inherited from EventEmitter --
|
65
65
|
# @nodoc
|
66
|
-
def
|
67
|
-
event_emitter_proxy.
|
66
|
+
def on(event, callback)
|
67
|
+
event_emitter_proxy.on(event, callback)
|
68
68
|
end
|
69
69
|
|
70
70
|
# -- inherited from EventEmitter --
|
71
71
|
# @nodoc
|
72
|
-
def
|
73
|
-
event_emitter_proxy.
|
72
|
+
def off(event, callback)
|
73
|
+
event_emitter_proxy.off(event, callback)
|
74
74
|
end
|
75
75
|
|
76
76
|
# -- inherited from EventEmitter --
|
77
77
|
# @nodoc
|
78
|
-
def
|
79
|
-
event_emitter_proxy.
|
78
|
+
def once(event, callback)
|
79
|
+
event_emitter_proxy.once(event, callback)
|
80
80
|
end
|
81
81
|
|
82
82
|
private def event_emitter_proxy
|
@@ -72,20 +72,20 @@ module Playwright
|
|
72
72
|
|
73
73
|
# -- inherited from EventEmitter --
|
74
74
|
# @nodoc
|
75
|
-
def
|
76
|
-
event_emitter_proxy.
|
75
|
+
def on(event, callback)
|
76
|
+
event_emitter_proxy.on(event, callback)
|
77
77
|
end
|
78
78
|
|
79
79
|
# -- inherited from EventEmitter --
|
80
80
|
# @nodoc
|
81
|
-
def
|
82
|
-
event_emitter_proxy.
|
81
|
+
def off(event, callback)
|
82
|
+
event_emitter_proxy.off(event, callback)
|
83
83
|
end
|
84
84
|
|
85
85
|
# -- inherited from EventEmitter --
|
86
86
|
# @nodoc
|
87
|
-
def
|
88
|
-
event_emitter_proxy.
|
87
|
+
def once(event, callback)
|
88
|
+
event_emitter_proxy.once(event, callback)
|
89
89
|
end
|
90
90
|
|
91
91
|
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
|
@@ -58,20 +58,20 @@ module Playwright
|
|
58
58
|
|
59
59
|
# -- inherited from EventEmitter --
|
60
60
|
# @nodoc
|
61
|
-
def
|
62
|
-
event_emitter_proxy.
|
61
|
+
def on(event, callback)
|
62
|
+
event_emitter_proxy.on(event, callback)
|
63
63
|
end
|
64
64
|
|
65
65
|
# -- inherited from EventEmitter --
|
66
66
|
# @nodoc
|
67
|
-
def
|
68
|
-
event_emitter_proxy.
|
67
|
+
def off(event, callback)
|
68
|
+
event_emitter_proxy.off(event, callback)
|
69
69
|
end
|
70
70
|
|
71
71
|
# -- inherited from EventEmitter --
|
72
72
|
# @nodoc
|
73
|
-
def
|
74
|
-
event_emitter_proxy.
|
73
|
+
def once(event, callback)
|
74
|
+
event_emitter_proxy.once(event, callback)
|
75
75
|
end
|
76
76
|
|
77
77
|
private def event_emitter_proxy
|
data/sig/playwright.rbs
CHANGED
@@ -360,7 +360,7 @@ module Playwright
|
|
360
360
|
def add_init_script: (?path: (String | File), ?script: String) -> void
|
361
361
|
def background_pages: -> Array[untyped]
|
362
362
|
def browser: -> (nil | Browser)
|
363
|
-
def clear_cookies: -> void
|
363
|
+
def clear_cookies: (?domain: (String | Regexp), ?name: (String | Regexp), ?path: (String | Regexp)) -> void
|
364
364
|
def clear_permissions: -> void
|
365
365
|
def close: (?reason: String) -> void
|
366
366
|
def cookies: (?urls: (String | Array[untyped])) -> Array[untyped]
|
@@ -451,6 +451,7 @@ module Playwright
|
|
451
451
|
def drag_to: (Locator target, ?force: bool, ?noWaitAfter: bool, ?sourcePosition: Hash[untyped, untyped], ?targetPosition: Hash[untyped, untyped], ?timeout: Float, ?trial: bool) -> void
|
452
452
|
def element_handle: (?timeout: Float) -> ElementHandle
|
453
453
|
def element_handles: -> Array[untyped]
|
454
|
+
def content_frame: -> FrameLocator
|
454
455
|
def evaluate: (String expression, ?arg: untyped, ?timeout: Float) -> untyped
|
455
456
|
def evaluate_all: (String expression, ?arg: untyped) -> untyped
|
456
457
|
def evaluate_handle: (String expression, ?arg: untyped, ?timeout: Float) -> JSHandle
|
@@ -514,6 +515,7 @@ module Playwright
|
|
514
515
|
def last: -> FrameLocator
|
515
516
|
def locator: ((String | Locator) selectorOrLocator, ?has: Locator, ?hasNot: Locator, ?hasNotText: (String | Regexp), ?hasText: (String | Regexp)) -> Locator
|
516
517
|
def nth: (Integer index) -> FrameLocator
|
518
|
+
def owner: -> Locator
|
517
519
|
end
|
518
520
|
|
519
521
|
class APIResponse
|
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: 1.
|
4
|
+
version: 1.43.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YusukeIwaki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -407,5 +407,5 @@ requirements: []
|
|
407
407
|
rubygems_version: 3.3.26
|
408
408
|
signing_key:
|
409
409
|
specification_version: 4
|
410
|
-
summary: The Ruby binding of playwright driver 1.
|
410
|
+
summary: The Ruby binding of playwright driver 1.43.1
|
411
411
|
test_files: []
|