playwright-ruby-client 1.42.1 → 1.43.1
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/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 +23 -13
- 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 +8 -8
- 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 +29 -25
- data/lib/playwright_api/playwright.rb +6 -6
- data/lib/playwright_api/request.rb +6 -6
- data/lib/playwright_api/response.rb +8 -8
- 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 +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 28e058238a428979c1a84b8fd1109d37cd0aa79669ba3a0695bd374b1e0c8776
|
|
4
|
+
data.tar.gz: 4255f868bdd795dd1a8f84b9348f97d4d01e0a8fbd8f45ae51b366d868673a29
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ad65fdc5ca36488f277ab184baf0cf5dca2de67c873de126a0153210d10fce83ff48a8d9ebc6b5fe7aeefc05158cbe0d9661fa9ee57d25c6688dc87f3023f715
|
|
7
|
+
data.tar.gz: 9a3c7087cc9fd12f75bcbfe66fefe4a5a470b96aef03f596e84f36dc94ec1a738cac7aa7466cb71bfe4047e88c185e2e0fd7a9a9f638b9319cb6231adca900b0
|
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
|
|
@@ -38,12 +38,6 @@ module Playwright
|
|
|
38
38
|
end
|
|
39
39
|
alias_method :default_timeout=, :set_default_timeout
|
|
40
40
|
|
|
41
|
-
# -- inherited from EventEmitter --
|
|
42
|
-
# @nodoc
|
|
43
|
-
def off(event, callback)
|
|
44
|
-
event_emitter_proxy.off(event, callback)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
41
|
# -- inherited from EventEmitter --
|
|
48
42
|
# @nodoc
|
|
49
43
|
def once(event, callback)
|
|
@@ -56,6 +50,12 @@ module Playwright
|
|
|
56
50
|
event_emitter_proxy.on(event, callback)
|
|
57
51
|
end
|
|
58
52
|
|
|
53
|
+
# -- inherited from EventEmitter --
|
|
54
|
+
# @nodoc
|
|
55
|
+
def off(event, callback)
|
|
56
|
+
event_emitter_proxy.off(event, callback)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
59
|
private def event_emitter_proxy
|
|
60
60
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
61
61
|
end
|
|
@@ -203,12 +203,6 @@ module Playwright
|
|
|
203
203
|
wrap_impl(@impl.should_close_connection_on_close!)
|
|
204
204
|
end
|
|
205
205
|
|
|
206
|
-
# -- inherited from EventEmitter --
|
|
207
|
-
# @nodoc
|
|
208
|
-
def off(event, callback)
|
|
209
|
-
event_emitter_proxy.off(event, callback)
|
|
210
|
-
end
|
|
211
|
-
|
|
212
206
|
# -- inherited from EventEmitter --
|
|
213
207
|
# @nodoc
|
|
214
208
|
def once(event, callback)
|
|
@@ -221,6 +215,12 @@ module Playwright
|
|
|
221
215
|
event_emitter_proxy.on(event, callback)
|
|
222
216
|
end
|
|
223
217
|
|
|
218
|
+
# -- inherited from EventEmitter --
|
|
219
|
+
# @nodoc
|
|
220
|
+
def off(event, callback)
|
|
221
|
+
event_emitter_proxy.off(event, callback)
|
|
222
|
+
end
|
|
223
|
+
|
|
224
224
|
private def event_emitter_proxy
|
|
225
225
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
226
226
|
end
|
|
@@ -278,12 +278,6 @@ module Playwright
|
|
|
278
278
|
raise NotImplementedError.new('storage_state is not implemented yet.')
|
|
279
279
|
end
|
|
280
280
|
|
|
281
|
-
# -- inherited from EventEmitter --
|
|
282
|
-
# @nodoc
|
|
283
|
-
def off(event, callback)
|
|
284
|
-
event_emitter_proxy.off(event, callback)
|
|
285
|
-
end
|
|
286
|
-
|
|
287
281
|
# -- inherited from EventEmitter --
|
|
288
282
|
# @nodoc
|
|
289
283
|
def once(event, callback)
|
|
@@ -296,6 +290,12 @@ module Playwright
|
|
|
296
290
|
event_emitter_proxy.on(event, callback)
|
|
297
291
|
end
|
|
298
292
|
|
|
293
|
+
# -- inherited from EventEmitter --
|
|
294
|
+
# @nodoc
|
|
295
|
+
def off(event, callback)
|
|
296
|
+
event_emitter_proxy.off(event, callback)
|
|
297
|
+
end
|
|
298
|
+
|
|
299
299
|
private def event_emitter_proxy
|
|
300
300
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
301
301
|
end
|
|
@@ -200,12 +200,6 @@ module Playwright
|
|
|
200
200
|
wrap_impl(@impl.version)
|
|
201
201
|
end
|
|
202
202
|
|
|
203
|
-
# -- inherited from EventEmitter --
|
|
204
|
-
# @nodoc
|
|
205
|
-
def off(event, callback)
|
|
206
|
-
event_emitter_proxy.off(event, callback)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
203
|
# -- inherited from EventEmitter --
|
|
210
204
|
# @nodoc
|
|
211
205
|
def once(event, callback)
|
|
@@ -218,6 +212,12 @@ module Playwright
|
|
|
218
212
|
event_emitter_proxy.on(event, callback)
|
|
219
213
|
end
|
|
220
214
|
|
|
215
|
+
# -- inherited from EventEmitter --
|
|
216
|
+
# @nodoc
|
|
217
|
+
def off(event, callback)
|
|
218
|
+
event_emitter_proxy.off(event, callback)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
221
|
private def event_emitter_proxy
|
|
222
222
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
223
223
|
end
|
|
@@ -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
|
#
|
|
@@ -443,11 +453,6 @@ module Playwright
|
|
|
443
453
|
wrap_impl(@impl.pause)
|
|
444
454
|
end
|
|
445
455
|
|
|
446
|
-
# @nodoc
|
|
447
|
-
def options=(req)
|
|
448
|
-
wrap_impl(@impl.options=(unwrap_impl(req)))
|
|
449
|
-
end
|
|
450
|
-
|
|
451
456
|
# @nodoc
|
|
452
457
|
def owner_page=(req)
|
|
453
458
|
wrap_impl(@impl.owner_page=(unwrap_impl(req)))
|
|
@@ -459,14 +464,13 @@ module Playwright
|
|
|
459
464
|
end
|
|
460
465
|
|
|
461
466
|
# @nodoc
|
|
462
|
-
def
|
|
463
|
-
wrap_impl(@impl.
|
|
467
|
+
def options=(req)
|
|
468
|
+
wrap_impl(@impl.options=(unwrap_impl(req)))
|
|
464
469
|
end
|
|
465
470
|
|
|
466
|
-
# -- inherited from EventEmitter --
|
|
467
471
|
# @nodoc
|
|
468
|
-
def
|
|
469
|
-
|
|
472
|
+
def browser=(req)
|
|
473
|
+
wrap_impl(@impl.browser=(unwrap_impl(req)))
|
|
470
474
|
end
|
|
471
475
|
|
|
472
476
|
# -- inherited from EventEmitter --
|
|
@@ -481,6 +485,12 @@ module Playwright
|
|
|
481
485
|
event_emitter_proxy.on(event, callback)
|
|
482
486
|
end
|
|
483
487
|
|
|
488
|
+
# -- inherited from EventEmitter --
|
|
489
|
+
# @nodoc
|
|
490
|
+
def off(event, callback)
|
|
491
|
+
event_emitter_proxy.off(event, callback)
|
|
492
|
+
end
|
|
493
|
+
|
|
484
494
|
private def event_emitter_proxy
|
|
485
495
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
486
496
|
end
|
|
@@ -174,12 +174,6 @@ module Playwright
|
|
|
174
174
|
wrap_impl(@impl.name)
|
|
175
175
|
end
|
|
176
176
|
|
|
177
|
-
# -- inherited from EventEmitter --
|
|
178
|
-
# @nodoc
|
|
179
|
-
def off(event, callback)
|
|
180
|
-
event_emitter_proxy.off(event, callback)
|
|
181
|
-
end
|
|
182
|
-
|
|
183
177
|
# -- inherited from EventEmitter --
|
|
184
178
|
# @nodoc
|
|
185
179
|
def once(event, callback)
|
|
@@ -192,6 +186,12 @@ module Playwright
|
|
|
192
186
|
event_emitter_proxy.on(event, callback)
|
|
193
187
|
end
|
|
194
188
|
|
|
189
|
+
# -- inherited from EventEmitter --
|
|
190
|
+
# @nodoc
|
|
191
|
+
def off(event, callback)
|
|
192
|
+
event_emitter_proxy.off(event, callback)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
195
|
private def event_emitter_proxy
|
|
196
196
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
197
197
|
end
|
|
@@ -32,12 +32,6 @@ module Playwright
|
|
|
32
32
|
wrap_impl(@impl.send_message(unwrap_impl(method), params: unwrap_impl(params)))
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
# -- inherited from EventEmitter --
|
|
36
|
-
# @nodoc
|
|
37
|
-
def off(event, callback)
|
|
38
|
-
event_emitter_proxy.off(event, callback)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
35
|
# -- inherited from EventEmitter --
|
|
42
36
|
# @nodoc
|
|
43
37
|
def once(event, callback)
|
|
@@ -50,6 +44,12 @@ module Playwright
|
|
|
50
44
|
event_emitter_proxy.on(event, callback)
|
|
51
45
|
end
|
|
52
46
|
|
|
47
|
+
# -- inherited from EventEmitter --
|
|
48
|
+
# @nodoc
|
|
49
|
+
def off(event, callback)
|
|
50
|
+
event_emitter_proxy.off(event, callback)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
53
|
private def event_emitter_proxy
|
|
54
54
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
55
55
|
end
|
|
@@ -68,12 +68,6 @@ module Playwright
|
|
|
68
68
|
wrap_impl(@impl.accept_async(promptText: unwrap_impl(promptText)))
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
# -- inherited from EventEmitter --
|
|
72
|
-
# @nodoc
|
|
73
|
-
def off(event, callback)
|
|
74
|
-
event_emitter_proxy.off(event, callback)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
71
|
# -- inherited from EventEmitter --
|
|
78
72
|
# @nodoc
|
|
79
73
|
def once(event, callback)
|
|
@@ -86,6 +80,12 @@ module Playwright
|
|
|
86
80
|
event_emitter_proxy.on(event, callback)
|
|
87
81
|
end
|
|
88
82
|
|
|
83
|
+
# -- inherited from EventEmitter --
|
|
84
|
+
# @nodoc
|
|
85
|
+
def off(event, callback)
|
|
86
|
+
event_emitter_proxy.off(event, callback)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
89
|
private def event_emitter_proxy
|
|
90
90
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
91
91
|
end
|
|
@@ -573,12 +573,6 @@ module Playwright
|
|
|
573
573
|
wrap_impl(@impl.wait_for_selector(unwrap_impl(selector), state: unwrap_impl(state), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
|
|
574
574
|
end
|
|
575
575
|
|
|
576
|
-
# -- inherited from EventEmitter --
|
|
577
|
-
# @nodoc
|
|
578
|
-
def off(event, callback)
|
|
579
|
-
event_emitter_proxy.off(event, callback)
|
|
580
|
-
end
|
|
581
|
-
|
|
582
576
|
# -- inherited from EventEmitter --
|
|
583
577
|
# @nodoc
|
|
584
578
|
def once(event, callback)
|
|
@@ -591,6 +585,12 @@ module Playwright
|
|
|
591
585
|
event_emitter_proxy.on(event, callback)
|
|
592
586
|
end
|
|
593
587
|
|
|
588
|
+
# -- inherited from EventEmitter --
|
|
589
|
+
# @nodoc
|
|
590
|
+
def off(event, callback)
|
|
591
|
+
event_emitter_proxy.off(event, callback)
|
|
592
|
+
end
|
|
593
|
+
|
|
594
594
|
private def event_emitter_proxy
|
|
595
595
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
596
596
|
end
|
data/lib/playwright_api/frame.rb
CHANGED
|
@@ -1037,20 +1037,14 @@ module Playwright
|
|
|
1037
1037
|
wrap_impl(@impl.wait_for_url(unwrap_impl(url), timeout: unwrap_impl(timeout), waitUntil: unwrap_impl(waitUntil)))
|
|
1038
1038
|
end
|
|
1039
1039
|
|
|
1040
|
-
# @nodoc
|
|
1041
|
-
def detached=(req)
|
|
1042
|
-
wrap_impl(@impl.detached=(unwrap_impl(req)))
|
|
1043
|
-
end
|
|
1044
|
-
|
|
1045
1040
|
# @nodoc
|
|
1046
1041
|
def highlight(selector)
|
|
1047
1042
|
wrap_impl(@impl.highlight(unwrap_impl(selector)))
|
|
1048
1043
|
end
|
|
1049
1044
|
|
|
1050
|
-
# -- inherited from EventEmitter --
|
|
1051
1045
|
# @nodoc
|
|
1052
|
-
def
|
|
1053
|
-
|
|
1046
|
+
def detached=(req)
|
|
1047
|
+
wrap_impl(@impl.detached=(unwrap_impl(req)))
|
|
1054
1048
|
end
|
|
1055
1049
|
|
|
1056
1050
|
# -- inherited from EventEmitter --
|
|
@@ -1065,6 +1059,12 @@ module Playwright
|
|
|
1065
1059
|
event_emitter_proxy.on(event, callback)
|
|
1066
1060
|
end
|
|
1067
1061
|
|
|
1062
|
+
# -- inherited from EventEmitter --
|
|
1063
|
+
# @nodoc
|
|
1064
|
+
def off(event, callback)
|
|
1065
|
+
event_emitter_proxy.off(event, callback)
|
|
1066
|
+
end
|
|
1067
|
+
|
|
1068
1068
|
private def event_emitter_proxy
|
|
1069
1069
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
1070
1070
|
end
|
|
@@ -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
|
|
@@ -98,12 +98,6 @@ module Playwright
|
|
|
98
98
|
wrap_impl(@impl.to_s)
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
# -- inherited from EventEmitter --
|
|
102
|
-
# @nodoc
|
|
103
|
-
def off(event, callback)
|
|
104
|
-
event_emitter_proxy.off(event, callback)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
101
|
# -- inherited from EventEmitter --
|
|
108
102
|
# @nodoc
|
|
109
103
|
def once(event, callback)
|
|
@@ -116,6 +110,12 @@ module Playwright
|
|
|
116
110
|
event_emitter_proxy.on(event, callback)
|
|
117
111
|
end
|
|
118
112
|
|
|
113
|
+
# -- inherited from EventEmitter --
|
|
114
|
+
# @nodoc
|
|
115
|
+
def off(event, callback)
|
|
116
|
+
event_emitter_proxy.off(event, callback)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
119
|
private def event_emitter_proxy
|
|
120
120
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
121
121
|
end
|
|
@@ -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,22 +1777,6 @@ module Playwright
|
|
|
1763
1777
|
wrap_impl(@impl.stop_js_coverage)
|
|
1764
1778
|
end
|
|
1765
1779
|
|
|
1766
|
-
# @nodoc
|
|
1767
|
-
def owned_context=(req)
|
|
1768
|
-
wrap_impl(@impl.owned_context=(unwrap_impl(req)))
|
|
1769
|
-
end
|
|
1770
|
-
|
|
1771
|
-
# @nodoc
|
|
1772
|
-
def guid
|
|
1773
|
-
wrap_impl(@impl.guid)
|
|
1774
|
-
end
|
|
1775
|
-
|
|
1776
|
-
# -- inherited from EventEmitter --
|
|
1777
|
-
# @nodoc
|
|
1778
|
-
def off(event, callback)
|
|
1779
|
-
event_emitter_proxy.off(event, callback)
|
|
1780
|
-
end
|
|
1781
|
-
|
|
1782
1780
|
# -- inherited from EventEmitter --
|
|
1783
1781
|
# @nodoc
|
|
1784
1782
|
def once(event, callback)
|
|
@@ -1791,6 +1789,12 @@ module Playwright
|
|
|
1791
1789
|
event_emitter_proxy.on(event, callback)
|
|
1792
1790
|
end
|
|
1793
1791
|
|
|
1792
|
+
# -- inherited from EventEmitter --
|
|
1793
|
+
# @nodoc
|
|
1794
|
+
def off(event, callback)
|
|
1795
|
+
event_emitter_proxy.off(event, callback)
|
|
1796
|
+
end
|
|
1797
|
+
|
|
1794
1798
|
private def event_emitter_proxy
|
|
1795
1799
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
1796
1800
|
end
|
|
@@ -103,12 +103,6 @@ module Playwright
|
|
|
103
103
|
wrap_impl(@impl.electron)
|
|
104
104
|
end
|
|
105
105
|
|
|
106
|
-
# -- inherited from EventEmitter --
|
|
107
|
-
# @nodoc
|
|
108
|
-
def off(event, callback)
|
|
109
|
-
event_emitter_proxy.off(event, callback)
|
|
110
|
-
end
|
|
111
|
-
|
|
112
106
|
# -- inherited from EventEmitter --
|
|
113
107
|
# @nodoc
|
|
114
108
|
def once(event, callback)
|
|
@@ -121,6 +115,12 @@ module Playwright
|
|
|
121
115
|
event_emitter_proxy.on(event, callback)
|
|
122
116
|
end
|
|
123
117
|
|
|
118
|
+
# -- inherited from EventEmitter --
|
|
119
|
+
# @nodoc
|
|
120
|
+
def off(event, callback)
|
|
121
|
+
event_emitter_proxy.off(event, callback)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
124
|
private def event_emitter_proxy
|
|
125
125
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
126
126
|
end
|
|
@@ -205,12 +205,6 @@ module Playwright
|
|
|
205
205
|
wrap_impl(@impl.header_values(unwrap_impl(name)))
|
|
206
206
|
end
|
|
207
207
|
|
|
208
|
-
# -- inherited from EventEmitter --
|
|
209
|
-
# @nodoc
|
|
210
|
-
def off(event, callback)
|
|
211
|
-
event_emitter_proxy.off(event, callback)
|
|
212
|
-
end
|
|
213
|
-
|
|
214
208
|
# -- inherited from EventEmitter --
|
|
215
209
|
# @nodoc
|
|
216
210
|
def once(event, callback)
|
|
@@ -223,6 +217,12 @@ module Playwright
|
|
|
223
217
|
event_emitter_proxy.on(event, callback)
|
|
224
218
|
end
|
|
225
219
|
|
|
220
|
+
# -- inherited from EventEmitter --
|
|
221
|
+
# @nodoc
|
|
222
|
+
def off(event, callback)
|
|
223
|
+
event_emitter_proxy.off(event, callback)
|
|
224
|
+
end
|
|
225
|
+
|
|
226
226
|
private def event_emitter_proxy
|
|
227
227
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
228
228
|
end
|
|
@@ -117,20 +117,14 @@ module Playwright
|
|
|
117
117
|
wrap_impl(@impl.url)
|
|
118
118
|
end
|
|
119
119
|
|
|
120
|
-
# @nodoc
|
|
121
|
-
def from_service_worker?
|
|
122
|
-
wrap_impl(@impl.from_service_worker?)
|
|
123
|
-
end
|
|
124
|
-
|
|
125
120
|
# @nodoc
|
|
126
121
|
def ok?
|
|
127
122
|
wrap_impl(@impl.ok?)
|
|
128
123
|
end
|
|
129
124
|
|
|
130
|
-
# -- inherited from EventEmitter --
|
|
131
125
|
# @nodoc
|
|
132
|
-
def
|
|
133
|
-
|
|
126
|
+
def from_service_worker?
|
|
127
|
+
wrap_impl(@impl.from_service_worker?)
|
|
134
128
|
end
|
|
135
129
|
|
|
136
130
|
# -- inherited from EventEmitter --
|
|
@@ -145,6 +139,12 @@ module Playwright
|
|
|
145
139
|
event_emitter_proxy.on(event, callback)
|
|
146
140
|
end
|
|
147
141
|
|
|
142
|
+
# -- inherited from EventEmitter --
|
|
143
|
+
# @nodoc
|
|
144
|
+
def off(event, callback)
|
|
145
|
+
event_emitter_proxy.off(event, callback)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
148
|
private def event_emitter_proxy
|
|
149
149
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
150
150
|
end
|
data/lib/playwright_api/route.rb
CHANGED
|
@@ -165,12 +165,6 @@ module Playwright
|
|
|
165
165
|
wrap_impl(@impl.redirect_navigation_request(unwrap_impl(url)))
|
|
166
166
|
end
|
|
167
167
|
|
|
168
|
-
# -- inherited from EventEmitter --
|
|
169
|
-
# @nodoc
|
|
170
|
-
def off(event, callback)
|
|
171
|
-
event_emitter_proxy.off(event, callback)
|
|
172
|
-
end
|
|
173
|
-
|
|
174
168
|
# -- inherited from EventEmitter --
|
|
175
169
|
# @nodoc
|
|
176
170
|
def once(event, callback)
|
|
@@ -183,6 +177,12 @@ module Playwright
|
|
|
183
177
|
event_emitter_proxy.on(event, callback)
|
|
184
178
|
end
|
|
185
179
|
|
|
180
|
+
# -- inherited from EventEmitter --
|
|
181
|
+
# @nodoc
|
|
182
|
+
def off(event, callback)
|
|
183
|
+
event_emitter_proxy.off(event, callback)
|
|
184
|
+
end
|
|
185
|
+
|
|
186
186
|
private def event_emitter_proxy
|
|
187
187
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
188
188
|
end
|
|
@@ -61,12 +61,6 @@ module Playwright
|
|
|
61
61
|
wrap_impl(@impl.text_id_attribute=(unwrap_impl(attribute_name)))
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
# -- inherited from EventEmitter --
|
|
65
|
-
# @nodoc
|
|
66
|
-
def off(event, callback)
|
|
67
|
-
event_emitter_proxy.off(event, callback)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
64
|
# -- inherited from EventEmitter --
|
|
71
65
|
# @nodoc
|
|
72
66
|
def once(event, callback)
|
|
@@ -79,6 +73,12 @@ module Playwright
|
|
|
79
73
|
event_emitter_proxy.on(event, callback)
|
|
80
74
|
end
|
|
81
75
|
|
|
76
|
+
# -- inherited from EventEmitter --
|
|
77
|
+
# @nodoc
|
|
78
|
+
def off(event, callback)
|
|
79
|
+
event_emitter_proxy.off(event, callback)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
82
|
private def event_emitter_proxy
|
|
83
83
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
84
84
|
end
|
|
@@ -70,12 +70,6 @@ module Playwright
|
|
|
70
70
|
wrap_impl(@impl.stop_chunk(path: unwrap_impl(path)))
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
-
# -- inherited from EventEmitter --
|
|
74
|
-
# @nodoc
|
|
75
|
-
def off(event, callback)
|
|
76
|
-
event_emitter_proxy.off(event, callback)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
73
|
# -- inherited from EventEmitter --
|
|
80
74
|
# @nodoc
|
|
81
75
|
def once(event, callback)
|
|
@@ -88,6 +82,12 @@ module Playwright
|
|
|
88
82
|
event_emitter_proxy.on(event, callback)
|
|
89
83
|
end
|
|
90
84
|
|
|
85
|
+
# -- inherited from EventEmitter --
|
|
86
|
+
# @nodoc
|
|
87
|
+
def off(event, callback)
|
|
88
|
+
event_emitter_proxy.off(event, callback)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
91
|
private def event_emitter_proxy
|
|
92
92
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
93
93
|
end
|
|
@@ -32,12 +32,6 @@ module Playwright
|
|
|
32
32
|
wrap_impl(@impl.wait_for_event(unwrap_impl(event), predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
# -- inherited from EventEmitter --
|
|
36
|
-
# @nodoc
|
|
37
|
-
def off(event, callback)
|
|
38
|
-
event_emitter_proxy.off(event, callback)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
35
|
# -- inherited from EventEmitter --
|
|
42
36
|
# @nodoc
|
|
43
37
|
def once(event, callback)
|
|
@@ -50,6 +44,12 @@ module Playwright
|
|
|
50
44
|
event_emitter_proxy.on(event, callback)
|
|
51
45
|
end
|
|
52
46
|
|
|
47
|
+
# -- inherited from EventEmitter --
|
|
48
|
+
# @nodoc
|
|
49
|
+
def off(event, callback)
|
|
50
|
+
event_emitter_proxy.off(event, callback)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
53
|
private def event_emitter_proxy
|
|
54
54
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
55
55
|
end
|
|
@@ -56,12 +56,6 @@ module Playwright
|
|
|
56
56
|
wrap_impl(@impl.context=(unwrap_impl(req)))
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
# -- inherited from EventEmitter --
|
|
60
|
-
# @nodoc
|
|
61
|
-
def off(event, callback)
|
|
62
|
-
event_emitter_proxy.off(event, callback)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
59
|
# -- inherited from EventEmitter --
|
|
66
60
|
# @nodoc
|
|
67
61
|
def once(event, callback)
|
|
@@ -74,6 +68,12 @@ module Playwright
|
|
|
74
68
|
event_emitter_proxy.on(event, callback)
|
|
75
69
|
end
|
|
76
70
|
|
|
71
|
+
# -- inherited from EventEmitter --
|
|
72
|
+
# @nodoc
|
|
73
|
+
def off(event, callback)
|
|
74
|
+
event_emitter_proxy.off(event, callback)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
77
|
private def event_emitter_proxy
|
|
78
78
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
|
79
79
|
end
|
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.1
|
|
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-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -404,8 +404,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
404
404
|
- !ruby/object:Gem::Version
|
|
405
405
|
version: '0'
|
|
406
406
|
requirements: []
|
|
407
|
-
rubygems_version: 3.3.
|
|
407
|
+
rubygems_version: 3.3.27
|
|
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: []
|