playwright-ruby-client 0.6.0 → 0.6.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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/README.md +33 -0
  3. data/documentation/babel.config.js +3 -0
  4. data/documentation/docs/api/accessibility.md +7 -0
  5. data/documentation/docs/api/browser.md +185 -0
  6. data/documentation/docs/api/browser_context.md +398 -0
  7. data/documentation/docs/api/browser_type.md +105 -0
  8. data/documentation/docs/api/cdp_session.md +7 -0
  9. data/documentation/docs/api/console_message.md +41 -0
  10. data/documentation/docs/api/dialog.md +74 -0
  11. data/documentation/docs/api/element_handle.md +640 -0
  12. data/documentation/docs/api/experimental/_category_.yml +3 -0
  13. data/documentation/docs/api/experimental/android.md +25 -0
  14. data/documentation/docs/api/experimental/android_device.md +91 -0
  15. data/documentation/docs/api/experimental/android_input.md +38 -0
  16. data/documentation/docs/api/experimental/android_socket.md +7 -0
  17. data/documentation/docs/api/experimental/android_web_view.md +7 -0
  18. data/documentation/docs/api/file_chooser.md +51 -0
  19. data/documentation/docs/api/frame.md +867 -0
  20. data/documentation/docs/api/js_handle.md +116 -0
  21. data/documentation/docs/api/keyboard.md +157 -0
  22. data/documentation/docs/api/mouse.md +69 -0
  23. data/documentation/docs/api/page.md +1469 -0
  24. data/documentation/docs/api/playwright.md +63 -0
  25. data/documentation/docs/api/request.md +188 -0
  26. data/documentation/docs/api/response.md +97 -0
  27. data/documentation/docs/api/route.md +80 -0
  28. data/documentation/docs/api/selectors.md +23 -0
  29. data/documentation/docs/api/touchscreen.md +8 -0
  30. data/documentation/docs/api/tracing.md +54 -0
  31. data/documentation/docs/api/web_socket.md +7 -0
  32. data/documentation/docs/api/worker.md +7 -0
  33. data/documentation/docs/article/api_coverage.mdx +11 -0
  34. data/documentation/docs/article/getting_started.md +152 -0
  35. data/documentation/docs/article/guides/_category_.yml +3 -0
  36. data/documentation/docs/article/guides/download_playwright_driver.md +49 -0
  37. data/documentation/docs/article/guides/launch_browser.md +119 -0
  38. data/documentation/docs/article/guides/rails_integration.md +51 -0
  39. data/{docs → documentation/docs/include}/api_coverage.md +0 -0
  40. data/documentation/docusaurus.config.js +107 -0
  41. data/documentation/package.json +39 -0
  42. data/documentation/sidebars.js +15 -0
  43. data/documentation/src/components/HomepageFeatures.js +61 -0
  44. data/documentation/src/components/HomepageFeatures.module.css +13 -0
  45. data/documentation/src/css/custom.css +44 -0
  46. data/documentation/src/pages/index.js +50 -0
  47. data/documentation/src/pages/index.module.css +41 -0
  48. data/documentation/src/pages/markdown-page.md +7 -0
  49. data/documentation/static/.nojekyll +0 -0
  50. data/documentation/static/img/playwright-logo.svg +9 -0
  51. data/documentation/static/img/undraw_dropdown_menu.svg +1 -0
  52. data/documentation/static/img/undraw_web_development.svg +1 -0
  53. data/documentation/static/img/undraw_windows.svg +1 -0
  54. data/documentation/yarn.lock +8805 -0
  55. data/lib/playwright/channel_owners/binding_call.rb +33 -0
  56. data/lib/playwright/channel_owners/browser_context.rb +2 -2
  57. data/lib/playwright/channel_owners/element_handle.rb +2 -10
  58. data/lib/playwright/channel_owners/frame.rb +6 -28
  59. data/lib/playwright/channel_owners/js_handle.rb +2 -10
  60. data/lib/playwright/channel_owners/page.rb +10 -1
  61. data/lib/playwright/input_files.rb +0 -8
  62. data/lib/playwright/javascript.rb +0 -10
  63. data/lib/playwright/javascript/expression.rb +2 -7
  64. data/lib/playwright/version.rb +1 -1
  65. data/lib/playwright_api/accessibility.rb +7 -89
  66. data/lib/playwright_api/android.rb +7 -64
  67. data/lib/playwright_api/android_device.rb +8 -8
  68. data/lib/playwright_api/browser.rb +15 -169
  69. data/lib/playwright_api/browser_context.rb +47 -609
  70. data/lib/playwright_api/browser_type.rb +13 -103
  71. data/lib/playwright_api/cdp_session.rb +2 -25
  72. data/lib/playwright_api/console_message.rb +6 -6
  73. data/lib/playwright_api/dialog.rb +11 -92
  74. data/lib/playwright_api/element_handle.rb +60 -362
  75. data/lib/playwright_api/file_chooser.rb +0 -28
  76. data/lib/playwright_api/frame.rb +74 -713
  77. data/lib/playwright_api/js_handle.rb +16 -90
  78. data/lib/playwright_api/keyboard.rb +21 -213
  79. data/lib/playwright_api/mouse.rb +1 -45
  80. data/lib/playwright_api/page.rb +155 -1635
  81. data/lib/playwright_api/playwright.rb +14 -117
  82. data/lib/playwright_api/request.rb +15 -121
  83. data/lib/playwright_api/response.rb +9 -9
  84. data/lib/playwright_api/route.rb +8 -105
  85. data/lib/playwright_api/selectors.rb +6 -97
  86. data/lib/playwright_api/tracing.rb +1 -61
  87. data/lib/playwright_api/web_socket.rb +1 -1
  88. data/lib/playwright_api/worker.rb +6 -42
  89. metadata +55 -4
  90. data/lib/playwright/javascript/function.rb +0 -67
@@ -1,36 +1,16 @@
1
1
  module Playwright
2
2
  # JSHandle represents an in-page JavaScript object. JSHandles can be created with the [`method: Page.evaluateHandle`]
3
3
  # method.
4
- #
5
4
  #
6
- # ```js
7
- # const windowHandle = await page.evaluateHandle(() => window);
8
- # // ...
9
- # ```
10
- #
11
- # ```java
12
- # JSHandle windowHandle = page.evaluateHandle("() => window");
13
- # // ...
14
- # ```
15
- #
16
- # ```python async
17
- # window_handle = await page.evaluate_handle("window")
18
- # # ...
19
- # ```
20
- #
21
5
  # ```python sync
22
6
  # window_handle = page.evaluate_handle("window")
23
7
  # # ...
24
8
  # ```
25
- #
26
- # ```csharp
27
- # var windowHandle = await page.EvaluateHandleAsync("() => window");
28
- # ```
29
- #
9
+ #
30
10
  # JSHandle prevents the referenced JavaScript object being garbage collected unless the handle is exposed with
31
11
  # [`method: JSHandle.dispose`]. JSHandles are auto-disposed when their origin frame gets navigated or the parent context
32
12
  # gets destroyed.
33
- #
13
+ #
34
14
  # JSHandle instances can be used as an argument in [`method: Page.evalOnSelector`], [`method: Page.evaluate`] and
35
15
  # [`method: Page.evaluateHandle`] methods.
36
16
  class JSHandle < PlaywrightApi
@@ -46,84 +26,38 @@ module Playwright
46
26
  end
47
27
 
48
28
  # Returns the return value of `expression`.
49
- #
29
+ #
50
30
  # This method passes this handle as the first argument to `expression`.
51
- #
31
+ #
52
32
  # If `expression` returns a [Promise], then `handle.evaluate` would wait for the promise to resolve and return its value.
53
- #
33
+ #
54
34
  # Examples:
55
- #
56
35
  #
57
- # ```js
58
- # const tweetHandle = await page.$('.tweet .retweets');
59
- # expect(await tweetHandle.evaluate(node => node.innerText)).toBe('10 retweets');
60
- # ```
61
- #
62
- # ```java
63
- # ElementHandle tweetHandle = page.querySelector(".tweet .retweets");
64
- # assertEquals("10 retweets", tweetHandle.evaluate("node => node.innerText"));
65
- # ```
66
- #
67
- # ```python async
68
- # tweet_handle = await page.query_selector(".tweet .retweets")
69
- # assert await tweet_handle.evaluate("node => node.innerText") == "10 retweets"
70
- # ```
71
- #
72
36
  # ```python sync
73
37
  # tweet_handle = page.query_selector(".tweet .retweets")
74
38
  # assert tweet_handle.evaluate("node => node.innerText") == "10 retweets"
75
39
  # ```
76
- #
77
- # ```csharp
78
- # var tweetHandle = await page.QuerySelectorAsync(".tweet .retweets");
79
- # Assert.Equals("10 retweets", await tweetHandle.EvaluateAsync("node => node.innerText"));
80
- # ```
81
40
  def evaluate(expression, arg: nil)
82
41
  wrap_impl(@impl.evaluate(unwrap_impl(expression), arg: unwrap_impl(arg)))
83
42
  end
84
43
 
85
44
  # Returns the return value of `expression` as a `JSHandle`.
86
- #
45
+ #
87
46
  # This method passes this handle as the first argument to `expression`.
88
- #
47
+ #
89
48
  # The only difference between `jsHandle.evaluate` and `jsHandle.evaluateHandle` is that `jsHandle.evaluateHandle` returns
90
49
  # `JSHandle`.
91
- #
50
+ #
92
51
  # If the function passed to the `jsHandle.evaluateHandle` returns a [Promise], then `jsHandle.evaluateHandle` would wait
93
52
  # for the promise to resolve and return its value.
94
- #
53
+ #
95
54
  # See [`method: Page.evaluateHandle`] for more details.
96
55
  def evaluate_handle(expression, arg: nil)
97
56
  wrap_impl(@impl.evaluate_handle(unwrap_impl(expression), arg: unwrap_impl(arg)))
98
57
  end
99
58
 
100
59
  # The method returns a map with **own property names** as keys and JSHandle instances for the property values.
101
- #
102
60
  #
103
- # ```js
104
- # const handle = await page.evaluateHandle(() => ({window, document}));
105
- # const properties = await handle.getProperties();
106
- # const windowHandle = properties.get('window');
107
- # const documentHandle = properties.get('document');
108
- # await handle.dispose();
109
- # ```
110
- #
111
- # ```java
112
- # JSHandle handle = page.evaluateHandle("() => ({window, document}"););
113
- # Map<String, JSHandle> properties = handle.getProperties();
114
- # JSHandle windowHandle = properties.get("window");
115
- # JSHandle documentHandle = properties.get("document");
116
- # handle.dispose();
117
- # ```
118
- #
119
- # ```python async
120
- # handle = await page.evaluate_handle("{window, document}")
121
- # properties = await handle.get_properties()
122
- # window_handle = properties.get("window")
123
- # document_handle = properties.get("document")
124
- # await handle.dispose()
125
- # ```
126
- #
127
61
  # ```python sync
128
62
  # handle = page.evaluate_handle("{window, document}")
129
63
  # properties = handle.get_properties()
@@ -131,14 +65,6 @@ module Playwright
131
65
  # document_handle = properties.get("document")
132
66
  # handle.dispose()
133
67
  # ```
134
- #
135
- # ```csharp
136
- # var handle = await page.EvaluateHandleAsync("() => ({window, document}");
137
- # var properties = await handle.GetPropertiesAsync();
138
- # var windowHandle = properties["window"];
139
- # var documentHandle = properties["document"];
140
- # await handle.DisposeAsync();
141
- # ```
142
68
  def get_properties
143
69
  wrap_impl(@impl.get_properties)
144
70
  end
@@ -150,7 +76,7 @@ module Playwright
150
76
  end
151
77
 
152
78
  # Returns a JSON representation of the object. If the object has a `toJSON` function, it **will not be called**.
153
- #
79
+ #
154
80
  # > NOTE: The method will return an empty JSON object if the referenced object is not stringifiable. It will throw an
155
81
  # error if the object has circular references.
156
82
  def json_value
@@ -164,20 +90,20 @@ module Playwright
164
90
 
165
91
  # -- inherited from EventEmitter --
166
92
  # @nodoc
167
- def off(event, callback)
168
- event_emitter_proxy.off(event, callback)
93
+ def on(event, callback)
94
+ event_emitter_proxy.on(event, callback)
169
95
  end
170
96
 
171
97
  # -- inherited from EventEmitter --
172
98
  # @nodoc
173
- def once(event, callback)
174
- event_emitter_proxy.once(event, callback)
99
+ def off(event, callback)
100
+ event_emitter_proxy.off(event, callback)
175
101
  end
176
102
 
177
103
  # -- inherited from EventEmitter --
178
104
  # @nodoc
179
- def on(event, callback)
180
- event_emitter_proxy.on(event, callback)
105
+ def once(event, callback)
106
+ event_emitter_proxy.once(event, callback)
181
107
  end
182
108
 
183
109
  private def event_emitter_proxy
@@ -1,48 +1,12 @@
1
1
  module Playwright
2
2
  # Keyboard provides an api for managing a virtual keyboard. The high level api is [`method: Keyboard.type`], which takes
3
3
  # raw characters and generates proper keydown, keypress/input, and keyup events on your page.
4
- #
4
+ #
5
5
  # For finer control, you can use [`method: Keyboard.down`], [`method: Keyboard.up`], and [`method: Keyboard.insertText`]
6
6
  # to manually fire events as if they were generated from a real keyboard.
7
- #
7
+ #
8
8
  # An example of holding down `Shift` in order to select and delete some text:
9
- #
10
9
  #
11
- # ```js
12
- # await page.keyboard.type('Hello World!');
13
- # await page.keyboard.press('ArrowLeft');
14
- #
15
- # await page.keyboard.down('Shift');
16
- # for (let i = 0; i < ' World'.length; i++)
17
- # await page.keyboard.press('ArrowLeft');
18
- # await page.keyboard.up('Shift');
19
- #
20
- # await page.keyboard.press('Backspace');
21
- # // Result text will end up saying 'Hello!'
22
- # ```
23
- #
24
- # ```java
25
- # page.keyboard().type("Hello World!");
26
- # page.keyboard().press("ArrowLeft");
27
- # page.keyboard().down("Shift");
28
- # for (int i = 0; i < " World".length(); i++)
29
- # page.keyboard().press("ArrowLeft");
30
- # page.keyboard().up("Shift");
31
- # page.keyboard().press("Backspace");
32
- # // Result text will end up saying "Hello!"
33
- # ```
34
- #
35
- # ```python async
36
- # await page.keyboard.type("Hello World!")
37
- # await page.keyboard.press("ArrowLeft")
38
- # await page.keyboard.down("Shift")
39
- # for i in range(6):
40
- # await page.keyboard.press("ArrowLeft")
41
- # await page.keyboard.up("Shift")
42
- # await page.keyboard.press("Backspace")
43
- # # result text will end up saying "Hello!"
44
- # ```
45
- #
46
10
  # ```python sync
47
11
  # page.keyboard.type("Hello World!")
48
12
  # page.keyboard.press("ArrowLeft")
@@ -53,144 +17,59 @@ module Playwright
53
17
  # page.keyboard.press("Backspace")
54
18
  # # result text will end up saying "Hello!"
55
19
  # ```
56
- #
57
- # ```csharp
58
- # await page.Keyboard.TypeAsync("Hello World!");
59
- # await page.Keyboard.PressAsync("ArrowLeft");
60
- #
61
- # await page.Keyboard.DownAsync("Shift");
62
- # for (int i = 0; i < " World".Length; i++)
63
- # await page.Keyboard.PressAsync("ArrowLeft");
64
- #
65
- # await page.Keyboard.UpAsync("Shift");
66
- #
67
- # await page.Keyboard.PressAsync("Backspace");
68
- # // Result text will end up saying "Hello!"
69
- # ```
70
- #
20
+ #
71
21
  # An example of pressing uppercase `A`
72
- #
73
22
  #
74
- # ```js
75
- # await page.keyboard.press('Shift+KeyA');
76
- # // or
77
- # await page.keyboard.press('Shift+A');
78
- # ```
79
- #
80
- # ```java
81
- # page.keyboard().press("Shift+KeyA");
82
- # // or
83
- # page.keyboard().press("Shift+A");
84
- # ```
85
- #
86
- # ```python async
87
- # await page.keyboard.press("Shift+KeyA")
88
- # # or
89
- # await page.keyboard.press("Shift+A")
90
- # ```
91
- #
92
23
  # ```python sync
93
24
  # page.keyboard.press("Shift+KeyA")
94
25
  # # or
95
26
  # page.keyboard.press("Shift+A")
96
27
  # ```
97
- #
98
- # ```csharp
99
- # await page.Keyboard.PressAsync("Shift+KeyA");
100
- # // or
101
- # await page.Keyboard.PressAsync("Shift+A");
102
- # ```
103
- #
28
+ #
104
29
  # An example to trigger select-all with the keyboard
105
- #
106
30
  #
107
- # ```js
108
- # // on Windows and Linux
109
- # await page.keyboard.press('Control+A');
110
- # // on macOS
111
- # await page.keyboard.press('Meta+A');
112
- # ```
113
- #
114
- # ```java
115
- # // on Windows and Linux
116
- # page.keyboard().press("Control+A");
117
- # // on macOS
118
- # page.keyboard().press("Meta+A");
119
- # ```
120
- #
121
- # ```python async
122
- # # on windows and linux
123
- # await page.keyboard.press("Control+A")
124
- # # on mac_os
125
- # await page.keyboard.press("Meta+A")
126
- # ```
127
- #
128
31
  # ```python sync
129
32
  # # on windows and linux
130
33
  # page.keyboard.press("Control+A")
131
34
  # # on mac_os
132
35
  # page.keyboard.press("Meta+A")
133
36
  # ```
134
- #
135
- # ```csharp
136
- # // on Windows and Linux
137
- # await page.Keyboard.PressAsync("Control+A");
138
- # // on macOS
139
- # await page.Keyboard.PressAsync("Meta+A");
140
- # ```
141
37
  class Keyboard < PlaywrightApi
142
38
 
143
39
  # Dispatches a `keydown` event.
144
- #
40
+ #
145
41
  # `key` can specify the intended [keyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
146
42
  # value or a single character to generate the text for. A superset of the `key` values can be found
147
43
  # [here](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
148
- #
44
+ #
149
45
  # `F1` - `F12`, `Digit0`- `Digit9`, `KeyA`- `KeyZ`, `Backquote`, `Minus`, `Equal`, `Backslash`, `Backspace`, `Tab`,
150
46
  # `Delete`, `Escape`, `ArrowDown`, `End`, `Enter`, `Home`, `Insert`, `PageDown`, `PageUp`, `ArrowRight`, `ArrowUp`, etc.
151
- #
47
+ #
152
48
  # Following modification shortcuts are also supported: `Shift`, `Control`, `Alt`, `Meta`, `ShiftLeft`.
153
- #
49
+ #
154
50
  # Holding down `Shift` will type the text that corresponds to the `key` in the upper case.
155
- #
51
+ #
156
52
  # If `key` is a single character, it is case-sensitive, so the values `a` and `A` will generate different respective
157
53
  # texts.
158
- #
54
+ #
159
55
  # If `key` is a modifier key, `Shift`, `Meta`, `Control`, or `Alt`, subsequent key presses will be sent with that modifier
160
56
  # active. To release the modifier key, use [`method: Keyboard.up`].
161
- #
57
+ #
162
58
  # After the key is pressed once, subsequent calls to [`method: Keyboard.down`] will have
163
59
  # [repeat](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat) set to true. To release the key, use
164
60
  # [`method: Keyboard.up`].
165
- #
61
+ #
166
62
  # > NOTE: Modifier keys DO influence `keyboard.down`. Holding down `Shift` will type the text in upper case.
167
63
  def down(key)
168
64
  wrap_impl(@impl.down(unwrap_impl(key)))
169
65
  end
170
66
 
171
67
  # Dispatches only `input` event, does not emit the `keydown`, `keyup` or `keypress` events.
172
- #
173
68
  #
174
- # ```js
175
- # page.keyboard.insertText('嗨');
176
- # ```
177
- #
178
- # ```java
179
- # page.keyboard().insertText("嗨");
180
- # ```
181
- #
182
- # ```python async
183
- # await page.keyboard.insert_text("嗨")
184
- # ```
185
- #
186
69
  # ```python sync
187
70
  # page.keyboard.insert_text("嗨")
188
71
  # ```
189
- #
190
- # ```csharp
191
- # await page.Keyboard.PressAsync("嗨");
192
- # ```
193
- #
72
+ #
194
73
  # > NOTE: Modifier keys DO NOT effect `keyboard.insertText`. Holding down `Shift` will not type the text in upper case.
195
74
  def insert_text(text)
196
75
  wrap_impl(@impl.insert_text(unwrap_impl(text)))
@@ -199,57 +78,20 @@ module Playwright
199
78
  # `key` can specify the intended [keyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
200
79
  # value or a single character to generate the text for. A superset of the `key` values can be found
201
80
  # [here](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
202
- #
81
+ #
203
82
  # `F1` - `F12`, `Digit0`- `Digit9`, `KeyA`- `KeyZ`, `Backquote`, `Minus`, `Equal`, `Backslash`, `Backspace`, `Tab`,
204
83
  # `Delete`, `Escape`, `ArrowDown`, `End`, `Enter`, `Home`, `Insert`, `PageDown`, `PageUp`, `ArrowRight`, `ArrowUp`, etc.
205
- #
84
+ #
206
85
  # Following modification shortcuts are also supported: `Shift`, `Control`, `Alt`, `Meta`, `ShiftLeft`.
207
- #
86
+ #
208
87
  # Holding down `Shift` will type the text that corresponds to the `key` in the upper case.
209
- #
88
+ #
210
89
  # If `key` is a single character, it is case-sensitive, so the values `a` and `A` will generate different respective
211
90
  # texts.
212
- #
91
+ #
213
92
  # Shortcuts such as `key: "Control+o"` or `key: "Control+Shift+T"` are supported as well. When specified with the
214
93
  # modifier, modifier is pressed and being held while the subsequent key is being pressed.
215
- #
216
94
  #
217
- # ```js
218
- # const page = await browser.newPage();
219
- # await page.goto('https://keycode.info');
220
- # await page.keyboard.press('A');
221
- # await page.screenshot({ path: 'A.png' });
222
- # await page.keyboard.press('ArrowLeft');
223
- # await page.screenshot({ path: 'ArrowLeft.png' });
224
- # await page.keyboard.press('Shift+O');
225
- # await page.screenshot({ path: 'O.png' });
226
- # await browser.close();
227
- # ```
228
- #
229
- # ```java
230
- # Page page = browser.newPage();
231
- # page.navigate("https://keycode.info");
232
- # page.keyboard().press("A");
233
- # page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("A.png"));
234
- # page.keyboard().press("ArrowLeft");
235
- # page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("ArrowLeft.png")));
236
- # page.keyboard().press("Shift+O");
237
- # page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("O.png")));
238
- # browser.close();
239
- # ```
240
- #
241
- # ```python async
242
- # page = await browser.new_page()
243
- # await page.goto("https://keycode.info")
244
- # await page.keyboard.press("a")
245
- # await page.screenshot(path="a.png")
246
- # await page.keyboard.press("ArrowLeft")
247
- # await page.screenshot(path="arrow_left.png")
248
- # await page.keyboard.press("Shift+O")
249
- # await page.screenshot(path="o.png")
250
- # await browser.close()
251
- # ```
252
- #
253
95
  # ```python sync
254
96
  # page = browser.new_page()
255
97
  # page.goto("https://keycode.info")
@@ -261,55 +103,21 @@ module Playwright
261
103
  # page.screenshot(path="o.png")
262
104
  # browser.close()
263
105
  # ```
264
- #
265
- # ```csharp
266
- # await page.GotoAsync("https://keycode.info");
267
- # await page.Keyboard.PressAsync("A");
268
- # await page.ScreenshotAsync("A.png");
269
- # await page.Keyboard.PressAsync("ArrowLeft");
270
- # await page.ScreenshotAsync("ArrowLeft.png");
271
- # await page.Keyboard.PressAsync("Shift+O");
272
- # await page.ScreenshotAsync("O.png");
273
- # await browser.CloseAsync();
274
- # ```
275
- #
106
+ #
276
107
  # Shortcut for [`method: Keyboard.down`] and [`method: Keyboard.up`].
277
108
  def press(key, delay: nil)
278
109
  wrap_impl(@impl.press(unwrap_impl(key), delay: unwrap_impl(delay)))
279
110
  end
280
111
 
281
112
  # Sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the text.
282
- #
113
+ #
283
114
  # To press a special key, like `Control` or `ArrowDown`, use [`method: Keyboard.press`].
284
- #
285
115
  #
286
- # ```js
287
- # await page.keyboard.type('Hello'); // Types instantly
288
- # await page.keyboard.type('World', {delay: 100}); // Types slower, like a user
289
- # ```
290
- #
291
- # ```java
292
- # // Types instantly
293
- # page.keyboard().type("Hello");
294
- # // Types slower, like a user
295
- # page.keyboard().type("World", new Keyboard.TypeOptions().setDelay(100));
296
- # ```
297
- #
298
- # ```python async
299
- # await page.keyboard.type("Hello") # types instantly
300
- # await page.keyboard.type("World", delay=100) # types slower, like a user
301
- # ```
302
- #
303
116
  # ```python sync
304
117
  # page.keyboard.type("Hello") # types instantly
305
118
  # page.keyboard.type("World", delay=100) # types slower, like a user
306
119
  # ```
307
- #
308
- # ```csharp
309
- # await page.Keyboard.TypeAsync("Hello"); // types instantly
310
- # await page.Keyboard.TypeAsync("World"); // types slower, like a user
311
- # ```
312
- #
120
+ #
313
121
  # > NOTE: Modifier keys DO NOT effect `keyboard.type`. Holding down `Shift` will not type the text in upper case.
314
122
  # > NOTE: For characters that are not on a US keyboard, only an `input` event will be sent.
315
123
  def type(text, delay: nil)