playwright-ruby-client 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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)