puppeteer-ruby 0.0.10

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 (161) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +71 -0
  3. data/.github/stale.yml +16 -0
  4. data/.gitignore +19 -0
  5. data/.rspec +3 -0
  6. data/.rubocop.yml +302 -0
  7. data/.travis.yml +7 -0
  8. data/Dockerfile +6 -0
  9. data/Gemfile +6 -0
  10. data/README.md +54 -0
  11. data/Rakefile +1 -0
  12. data/bin/console +11 -0
  13. data/bin/setup +8 -0
  14. data/docker-compose.yml +15 -0
  15. data/docs/Puppeteer.html +2020 -0
  16. data/docs/Puppeteer/AsyncAwaitBehavior.html +105 -0
  17. data/docs/Puppeteer/Browser.html +2148 -0
  18. data/docs/Puppeteer/BrowserContext.html +809 -0
  19. data/docs/Puppeteer/BrowserFetcher.html +214 -0
  20. data/docs/Puppeteer/BrowserRunner.html +914 -0
  21. data/docs/Puppeteer/BrowserRunner/BrowserProcess.html +477 -0
  22. data/docs/Puppeteer/CDPSession.html +813 -0
  23. data/docs/Puppeteer/CDPSession/Error.html +124 -0
  24. data/docs/Puppeteer/ConcurrentRubyUtils.html +430 -0
  25. data/docs/Puppeteer/Connection.html +960 -0
  26. data/docs/Puppeteer/Connection/MessageCallback.html +434 -0
  27. data/docs/Puppeteer/Connection/ProtocolError.html +216 -0
  28. data/docs/Puppeteer/Connection/RequestDebugPrinter.html +217 -0
  29. data/docs/Puppeteer/Connection/ResponseDebugPrinter.html +244 -0
  30. data/docs/Puppeteer/ConsoleMessage.html +565 -0
  31. data/docs/Puppeteer/ConsoleMessage/Location.html +433 -0
  32. data/docs/Puppeteer/DOMWorld.html +2219 -0
  33. data/docs/Puppeteer/DOMWorld/DetachedError.html +124 -0
  34. data/docs/Puppeteer/DOMWorld/DocumentEvaluationError.html +124 -0
  35. data/docs/Puppeteer/DebugPrint.html +233 -0
  36. data/docs/Puppeteer/Device.html +470 -0
  37. data/docs/Puppeteer/Devices.html +139 -0
  38. data/docs/Puppeteer/ElementHandle.html +2542 -0
  39. data/docs/Puppeteer/ElementHandle/ElementNotFoundError.html +206 -0
  40. data/docs/Puppeteer/ElementHandle/ElementNotVisibleError.html +206 -0
  41. data/docs/Puppeteer/ElementHandle/Point.html +492 -0
  42. data/docs/Puppeteer/ElementHandle/ScrollIntoViewError.html +124 -0
  43. data/docs/Puppeteer/EmulationManager.html +454 -0
  44. data/docs/Puppeteer/EventCallbackable.html +433 -0
  45. data/docs/Puppeteer/EventCallbackable/EventListeners.html +435 -0
  46. data/docs/Puppeteer/ExecutionContext.html +998 -0
  47. data/docs/Puppeteer/ExecutionContext/EvaluationError.html +124 -0
  48. data/docs/Puppeteer/ExecutionContext/JavaScriptExpression.html +357 -0
  49. data/docs/Puppeteer/ExecutionContext/JavaScriptFunction.html +389 -0
  50. data/docs/Puppeteer/FileChooser.html +455 -0
  51. data/docs/Puppeteer/Frame.html +3677 -0
  52. data/docs/Puppeteer/FrameManager.html +2410 -0
  53. data/docs/Puppeteer/FrameManager/NavigationError.html +124 -0
  54. data/docs/Puppeteer/IfPresent.html +222 -0
  55. data/docs/Puppeteer/JSHandle.html +1352 -0
  56. data/docs/Puppeteer/Keyboard.html +1557 -0
  57. data/docs/Puppeteer/Keyboard/KeyDefinition.html +831 -0
  58. data/docs/Puppeteer/Keyboard/KeyDescription.html +603 -0
  59. data/docs/Puppeteer/Launcher.html +237 -0
  60. data/docs/Puppeteer/Launcher/Base.html +385 -0
  61. data/docs/Puppeteer/Launcher/Base/ExecutablePathNotFound.html +124 -0
  62. data/docs/Puppeteer/Launcher/BrowserOptions.html +441 -0
  63. data/docs/Puppeteer/Launcher/Chrome.html +669 -0
  64. data/docs/Puppeteer/Launcher/Chrome/DefaultArgs.html +382 -0
  65. data/docs/Puppeteer/Launcher/ChromeArgOptions.html +531 -0
  66. data/docs/Puppeteer/Launcher/LaunchOptions.html +893 -0
  67. data/docs/Puppeteer/LifecycleWatcher.html +834 -0
  68. data/docs/Puppeteer/LifecycleWatcher/ExpectedLifecycle.html +363 -0
  69. data/docs/Puppeteer/LifecycleWatcher/FrameDetachedError.html +206 -0
  70. data/docs/Puppeteer/LifecycleWatcher/TerminatedError.html +124 -0
  71. data/docs/Puppeteer/Mouse.html +1105 -0
  72. data/docs/Puppeteer/Mouse/Button.html +136 -0
  73. data/docs/Puppeteer/NetworkManager.html +901 -0
  74. data/docs/Puppeteer/NetworkManager/Credentials.html +385 -0
  75. data/docs/Puppeteer/Page.html +5970 -0
  76. data/docs/Puppeteer/Page/FileChooserTimeoutError.html +206 -0
  77. data/docs/Puppeteer/Page/ScreenshotOptions.html +845 -0
  78. data/docs/Puppeteer/Page/ScriptTag.html +555 -0
  79. data/docs/Puppeteer/Page/StyleTag.html +448 -0
  80. data/docs/Puppeteer/Page/TargetCrashedError.html +124 -0
  81. data/docs/Puppeteer/RemoteObject.html +1087 -0
  82. data/docs/Puppeteer/Target.html +1336 -0
  83. data/docs/Puppeteer/Target/InitializeFailure.html +124 -0
  84. data/docs/Puppeteer/Target/TargetInfo.html +729 -0
  85. data/docs/Puppeteer/TimeoutError.html +135 -0
  86. data/docs/Puppeteer/TimeoutSettings.html +496 -0
  87. data/docs/Puppeteer/TouchScreen.html +464 -0
  88. data/docs/Puppeteer/Viewport.html +837 -0
  89. data/docs/Puppeteer/WaitTask.html +637 -0
  90. data/docs/Puppeteer/WaitTask/TerminatedError.html +124 -0
  91. data/docs/Puppeteer/WaitTask/TimeoutError.html +206 -0
  92. data/docs/Puppeteer/WebSocket.html +673 -0
  93. data/docs/Puppeteer/WebSocket/DriverImpl.html +412 -0
  94. data/docs/Puppeteer/WebSocketTransport.html +600 -0
  95. data/docs/Puppeteer/WebSocktTransportError.html +124 -0
  96. data/docs/_index.html +823 -0
  97. data/docs/class_list.html +51 -0
  98. data/docs/css/common.css +1 -0
  99. data/docs/css/full_list.css +58 -0
  100. data/docs/css/style.css +496 -0
  101. data/docs/file.README.html +123 -0
  102. data/docs/file_list.html +56 -0
  103. data/docs/frames.html +17 -0
  104. data/docs/index.html +123 -0
  105. data/docs/js/app.js +314 -0
  106. data/docs/js/full_list.js +216 -0
  107. data/docs/js/jquery.js +4 -0
  108. data/docs/method_list.html +4075 -0
  109. data/docs/top-level-namespace.html +126 -0
  110. data/lib/puppeteer.rb +200 -0
  111. data/lib/puppeteer/async_await_behavior.rb +38 -0
  112. data/lib/puppeteer/browser.rb +259 -0
  113. data/lib/puppeteer/browser_context.rb +90 -0
  114. data/lib/puppeteer/browser_fetcher.rb +6 -0
  115. data/lib/puppeteer/browser_runner.rb +161 -0
  116. data/lib/puppeteer/cdp_session.rb +100 -0
  117. data/lib/puppeteer/concurrent_ruby_utils.rb +37 -0
  118. data/lib/puppeteer/connection.rb +254 -0
  119. data/lib/puppeteer/console_message.rb +24 -0
  120. data/lib/puppeteer/debug_print.rb +20 -0
  121. data/lib/puppeteer/device.rb +12 -0
  122. data/lib/puppeteer/devices.rb +885 -0
  123. data/lib/puppeteer/dom_world.rb +484 -0
  124. data/lib/puppeteer/element_handle.rb +433 -0
  125. data/lib/puppeteer/element_handle/bounding_box.rb +12 -0
  126. data/lib/puppeteer/element_handle/box_model.rb +19 -0
  127. data/lib/puppeteer/element_handle/point.rb +26 -0
  128. data/lib/puppeteer/emulation_manager.rb +46 -0
  129. data/lib/puppeteer/errors.rb +2 -0
  130. data/lib/puppeteer/event_callbackable.rb +88 -0
  131. data/lib/puppeteer/execution_context.rb +254 -0
  132. data/lib/puppeteer/file_chooser.rb +29 -0
  133. data/lib/puppeteer/frame.rb +286 -0
  134. data/lib/puppeteer/frame_manager.rb +378 -0
  135. data/lib/puppeteer/if_present.rb +18 -0
  136. data/lib/puppeteer/js_handle.rb +142 -0
  137. data/lib/puppeteer/keyboard.rb +183 -0
  138. data/lib/puppeteer/keyboard/key_description.rb +19 -0
  139. data/lib/puppeteer/keyboard/us_keyboard_layout.rb +283 -0
  140. data/lib/puppeteer/launcher.rb +25 -0
  141. data/lib/puppeteer/launcher/base.rb +48 -0
  142. data/lib/puppeteer/launcher/browser_options.rb +41 -0
  143. data/lib/puppeteer/launcher/chrome.rb +211 -0
  144. data/lib/puppeteer/launcher/chrome_arg_options.rb +49 -0
  145. data/lib/puppeteer/launcher/launch_options.rb +68 -0
  146. data/lib/puppeteer/lifecycle_watcher.rb +171 -0
  147. data/lib/puppeteer/mouse.rb +123 -0
  148. data/lib/puppeteer/network_manager.rb +122 -0
  149. data/lib/puppeteer/page.rb +1065 -0
  150. data/lib/puppeteer/page/screenshot_options.rb +78 -0
  151. data/lib/puppeteer/remote_object.rb +143 -0
  152. data/lib/puppeteer/target.rb +150 -0
  153. data/lib/puppeteer/timeout_settings.rb +15 -0
  154. data/lib/puppeteer/touch_screen.rb +43 -0
  155. data/lib/puppeteer/version.rb +3 -0
  156. data/lib/puppeteer/viewport.rb +54 -0
  157. data/lib/puppeteer/wait_task.rb +188 -0
  158. data/lib/puppeteer/web_socket.rb +122 -0
  159. data/lib/puppeteer/web_socket_transport.rb +49 -0
  160. data/puppeteer-ruby.gemspec +32 -0
  161. metadata +355 -0
@@ -0,0 +1,139 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Puppeteer::Devices
8
+
9
+ &mdash; Documentation by YARD 0.9.24
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Puppeteer::Devices";
19
+ relpath = '../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../_index.html">Index (D)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../Puppeteer.html" title="Puppeteer (class)">Puppeteer</a></span></span>
41
+ &raquo;
42
+ <span class="title">Devices</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Puppeteer::Devices
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Puppeteer::Devices</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>lib/puppeteer/devices.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+
105
+ <p>Instead of Puppeteer::DEVICES[“iPhone X”], Puppeteer::DEVICES[“iPad Pro”],</p>
106
+ <ul><li>
107
+ <p>Puppeteer::Devices.iPhone_X</p>
108
+ </li><li>
109
+ <p>Puppeteer::Devices.iPad_Pro</p>
110
+ </li></ul>
111
+
112
+ <p>etc…</p>
113
+
114
+
115
+ </div>
116
+ </div>
117
+ <div class="tags">
118
+
119
+
120
+ </div>
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+ </div>
130
+
131
+ <div id="footer">
132
+ Generated on Fri Jun 12 12:38:33 2020 by
133
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
134
+ 0.9.24 (ruby-2.6.3).
135
+ </div>
136
+
137
+ </div>
138
+ </body>
139
+ </html>
@@ -0,0 +1,2542 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Puppeteer::ElementHandle
8
+
9
+ &mdash; Documentation by YARD 0.9.24
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Puppeteer::ElementHandle";
19
+ relpath = '../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../_index.html">Index (E)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../Puppeteer.html" title="Puppeteer (class)">Puppeteer</a></span></span>
41
+ &raquo;
42
+ <span class="title">ElementHandle</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Puppeteer::ElementHandle
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName"><span class='object_link'><a href="JSHandle.html" title="Puppeteer::JSHandle (class)">JSHandle</a></span></span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next"><span class='object_link'><a href="JSHandle.html" title="Puppeteer::JSHandle (class)">JSHandle</a></span></li>
78
+
79
+ <li class="next">Puppeteer::ElementHandle</li>
80
+
81
+ </ul>
82
+ <a href="#" class="inheritanceTree">show all</a>
83
+
84
+ </dd>
85
+ </dl>
86
+
87
+
88
+
89
+
90
+
91
+
92
+ <dl>
93
+ <dt>Includes:</dt>
94
+ <dd><span class='object_link'><a href="IfPresent.html" title="Puppeteer::IfPresent (module)">IfPresent</a></span></dd>
95
+ </dl>
96
+
97
+
98
+
99
+
100
+
101
+
102
+ <dl>
103
+ <dt>Defined in:</dt>
104
+ <dd>lib/puppeteer/element_handle.rb<span class="defines">,<br />
105
+ lib/puppeteer/element_handle/point.rb,<br /> lib/puppeteer/element_handle/box_model.rb,<br /> lib/puppeteer/element_handle/bounding_box.rb</span>
106
+ </dd>
107
+ </dl>
108
+
109
+ </div>
110
+
111
+ <h2>Defined Under Namespace</h2>
112
+ <p class="children">
113
+
114
+
115
+
116
+
117
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="ElementHandle/BoundingBox.html" title="Puppeteer::ElementHandle::BoundingBox (class)">BoundingBox</a></span>, <span class='object_link'><a href="ElementHandle/BoxModel.html" title="Puppeteer::ElementHandle::BoxModel (class)">BoxModel</a></span>, <span class='object_link'><a href="ElementHandle/ElementNotFoundError.html" title="Puppeteer::ElementHandle::ElementNotFoundError (class)">ElementNotFoundError</a></span>, <span class='object_link'><a href="ElementHandle/ElementNotVisibleError.html" title="Puppeteer::ElementHandle::ElementNotVisibleError (class)">ElementNotVisibleError</a></span>, <span class='object_link'><a href="ElementHandle/Point.html" title="Puppeteer::ElementHandle::Point (class)">Point</a></span>, <span class='object_link'><a href="ElementHandle/ScrollIntoViewError.html" title="Puppeteer::ElementHandle::ScrollIntoViewError (class)">ScrollIntoViewError</a></span>
118
+
119
+
120
+ </p>
121
+
122
+
123
+
124
+
125
+
126
+
127
+ <h2>Instance Attribute Summary</h2>
128
+
129
+ <h3 class="inherited">Attributes inherited from <span class='object_link'><a href="JSHandle.html" title="Puppeteer::JSHandle (class)">JSHandle</a></span></h3>
130
+ <p class="inherited"><span class='object_link'><a href="JSHandle.html#context-instance_method" title="Puppeteer::JSHandle#context (method)">#context</a></span>, <span class='object_link'><a href="JSHandle.html#remote_object-instance_method" title="Puppeteer::JSHandle#remote_object (method)">#remote_object</a></span></p>
131
+
132
+
133
+
134
+ <h2>
135
+ Instance Method Summary
136
+ <small><a href="#" class="summary_toggle">collapse</a></small>
137
+ </h2>
138
+
139
+ <ul class="summary">
140
+
141
+ <li class="public ">
142
+ <span class="summary_signature">
143
+
144
+ <a href="#as_element-instance_method" title="#as_element (instance method)">#<strong>as_element</strong> &#x21d2; Object </a>
145
+
146
+
147
+
148
+ </span>
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+ <span class="summary_desc"><div class='inline'></div></span>
159
+
160
+ </li>
161
+
162
+
163
+ <li class="public ">
164
+ <span class="summary_signature">
165
+
166
+ <a href="#async_press-instance_method" title="#async_press (instance method)">#<strong>async_press</strong> &#x21d2; Future </a>
167
+
168
+
169
+
170
+ </span>
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+ <span class="summary_desc"><div class='inline'></div></span>
181
+
182
+ </li>
183
+
184
+
185
+ <li class="public ">
186
+ <span class="summary_signature">
187
+
188
+ <a href="#async_Seval-instance_method" title="#async_Seval (instance method)">#<strong>async_Seval</strong> &#x21d2; Object </a>
189
+
190
+
191
+
192
+ </span>
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+ <span class="summary_desc"><div class='inline'>
203
+ <p>`$eval()` in JavaScript.</p>
204
+ </div></span>
205
+
206
+ </li>
207
+
208
+
209
+ <li class="public ">
210
+ <span class="summary_signature">
211
+
212
+ <a href="#async_SSeval-instance_method" title="#async_SSeval (instance method)">#<strong>async_SSeval</strong> &#x21d2; Object </a>
213
+
214
+
215
+
216
+ </span>
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+ <span class="summary_desc"><div class='inline'>
227
+ <p>`$$eval()` in JavaScript.</p>
228
+ </div></span>
229
+
230
+ </li>
231
+
232
+
233
+ <li class="public ">
234
+ <span class="summary_signature">
235
+
236
+ <a href="#async_type_text-instance_method" title="#async_type_text (instance method)">#<strong>async_type_text</strong> &#x21d2; Future </a>
237
+
238
+
239
+
240
+ </span>
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+ <span class="summary_desc"><div class='inline'></div></span>
251
+
252
+ </li>
253
+
254
+
255
+ <li class="public ">
256
+ <span class="summary_signature">
257
+
258
+ <a href="#bounding_box-instance_method" title="#bounding_box (instance method)">#<strong>bounding_box</strong> &#x21d2; BoundingBox|nil </a>
259
+
260
+
261
+
262
+ </span>
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+ <span class="summary_desc"><div class='inline'></div></span>
273
+
274
+ </li>
275
+
276
+
277
+ <li class="public ">
278
+ <span class="summary_signature">
279
+
280
+ <a href="#box_model-instance_method" title="#box_model (instance method)">#<strong>box_model</strong> &#x21d2; BoxModel|nil </a>
281
+
282
+
283
+
284
+ </span>
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+ <span class="summary_desc"><div class='inline'></div></span>
295
+
296
+ </li>
297
+
298
+
299
+ <li class="public ">
300
+ <span class="summary_signature">
301
+
302
+ <a href="#click-instance_method" title="#click (instance method)">#<strong>click</strong>(delay: nil, button: nil, click_count: nil) &#x21d2; Object </a>
303
+
304
+
305
+
306
+ </span>
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+ <span class="summary_desc"><div class='inline'></div></span>
317
+
318
+ </li>
319
+
320
+
321
+ <li class="public ">
322
+ <span class="summary_signature">
323
+
324
+ <a href="#clickable_point-instance_method" title="#clickable_point (instance method)">#<strong>clickable_point</strong> &#x21d2; Object </a>
325
+
326
+
327
+
328
+ </span>
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+ <span class="summary_desc"><div class='inline'></div></span>
339
+
340
+ </li>
341
+
342
+
343
+ <li class="public ">
344
+ <span class="summary_signature">
345
+
346
+ <a href="#content_frame-instance_method" title="#content_frame (instance method)">#<strong>content_frame</strong> &#x21d2; Object </a>
347
+
348
+
349
+
350
+ </span>
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+ <span class="summary_desc"><div class='inline'></div></span>
361
+
362
+ </li>
363
+
364
+
365
+ <li class="public ">
366
+ <span class="summary_signature">
367
+
368
+ <a href="#focus-instance_method" title="#focus (instance method)">#<strong>focus</strong> &#x21d2; Object </a>
369
+
370
+
371
+
372
+ </span>
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+ <span class="summary_desc"><div class='inline'></div></span>
383
+
384
+ </li>
385
+
386
+
387
+ <li class="public ">
388
+ <span class="summary_signature">
389
+
390
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(context:, client:, remote_object:, page:, frame_manager:) &#x21d2; ElementHandle </a>
391
+
392
+
393
+
394
+ </span>
395
+
396
+
397
+ <span class="note title constructor">constructor</span>
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+ <span class="summary_desc"><div class='inline'>
407
+ <p>A new instance of ElementHandle.</p>
408
+ </div></span>
409
+
410
+ </li>
411
+
412
+
413
+ <li class="public ">
414
+ <span class="summary_signature">
415
+
416
+ <a href="#press-instance_method" title="#press (instance method)">#<strong>press</strong>(key, delay: nil) &#x21d2; Object </a>
417
+
418
+
419
+
420
+ </span>
421
+
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+ <span class="summary_desc"><div class='inline'></div></span>
431
+
432
+ </li>
433
+
434
+
435
+ <li class="public ">
436
+ <span class="summary_signature">
437
+
438
+ <a href="#S-instance_method" title="#S (instance method)">#<strong>S</strong>(selector) &#x21d2; Object </a>
439
+
440
+
441
+
442
+ </span>
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+ <span class="summary_desc"><div class='inline'>
453
+ <p>`$()` in JavaScript.</p>
454
+ </div></span>
455
+
456
+ </li>
457
+
458
+
459
+ <li class="public ">
460
+ <span class="summary_signature">
461
+
462
+ <a href="#screenshot-instance_method" title="#screenshot (instance method)">#<strong>screenshot</strong>(options = {}) &#x21d2; Object </a>
463
+
464
+
465
+
466
+ </span>
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+ <span class="summary_desc"><div class='inline'></div></span>
477
+
478
+ </li>
479
+
480
+
481
+ <li class="public ">
482
+ <span class="summary_signature">
483
+
484
+ <a href="#scroll_into_view_if_needed-instance_method" title="#scroll_into_view_if_needed (instance method)">#<strong>scroll_into_view_if_needed</strong> &#x21d2; Object </a>
485
+
486
+
487
+
488
+ </span>
489
+
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+ <span class="summary_desc"><div class='inline'></div></span>
499
+
500
+ </li>
501
+
502
+
503
+ <li class="public ">
504
+ <span class="summary_signature">
505
+
506
+ <a href="#select-instance_method" title="#select (instance method)">#<strong>select</strong>(*values) &#x21d2; Array&lt;String&gt; </a>
507
+
508
+
509
+
510
+ </span>
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+ <span class="summary_desc"><div class='inline'></div></span>
521
+
522
+ </li>
523
+
524
+
525
+ <li class="public ">
526
+ <span class="summary_signature">
527
+
528
+ <a href="#Seval-instance_method" title="#Seval (instance method)">#<strong>Seval</strong>(selector, page_function, *args) &#x21d2; Object </a>
529
+
530
+
531
+
532
+ </span>
533
+
534
+
535
+
536
+
537
+
538
+
539
+
540
+
541
+
542
+ <span class="summary_desc"><div class='inline'>
543
+ <p>`$eval()` in JavaScript.</p>
544
+ </div></span>
545
+
546
+ </li>
547
+
548
+
549
+ <li class="public ">
550
+ <span class="summary_signature">
551
+
552
+ <a href="#SS-instance_method" title="#SS (instance method)">#<strong>SS</strong>(selector) &#x21d2; Object </a>
553
+
554
+
555
+
556
+ </span>
557
+
558
+
559
+
560
+
561
+
562
+
563
+
564
+
565
+
566
+ <span class="summary_desc"><div class='inline'>
567
+ <p>`$$()` in JavaScript.</p>
568
+ </div></span>
569
+
570
+ </li>
571
+
572
+
573
+ <li class="public ">
574
+ <span class="summary_signature">
575
+
576
+ <a href="#SSeval-instance_method" title="#SSeval (instance method)">#<strong>SSeval</strong>(selector, page_function, *args) &#x21d2; Object </a>
577
+
578
+
579
+
580
+ </span>
581
+
582
+
583
+
584
+
585
+
586
+
587
+
588
+
589
+
590
+ <span class="summary_desc"><div class='inline'>
591
+ <p>`$$eval()` in JavaScript.</p>
592
+ </div></span>
593
+
594
+ </li>
595
+
596
+
597
+ <li class="public ">
598
+ <span class="summary_signature">
599
+
600
+ <a href="#Sx-instance_method" title="#Sx (instance method)">#<strong>Sx</strong>(expression) &#x21d2; Array&lt;ElementHandle&gt; </a>
601
+
602
+
603
+
604
+ </span>
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+ <span class="summary_desc"><div class='inline'>
615
+ <p>`$x()` in JavaScript.</p>
616
+ </div></span>
617
+
618
+ </li>
619
+
620
+
621
+ <li class="public ">
622
+ <span class="summary_signature">
623
+
624
+ <a href="#tap-instance_method" title="#tap (instance method)">#<strong>tap</strong>(&amp;block) &#x21d2; Object </a>
625
+
626
+
627
+
628
+ </span>
629
+
630
+
631
+
632
+
633
+
634
+
635
+
636
+
637
+
638
+ <span class="summary_desc"><div class='inline'></div></span>
639
+
640
+ </li>
641
+
642
+
643
+ <li class="public ">
644
+ <span class="summary_signature">
645
+
646
+ <a href="#type_text-instance_method" title="#type_text (instance method)">#<strong>type_text</strong>(text, delay: nil) &#x21d2; Object </a>
647
+
648
+
649
+
650
+ </span>
651
+
652
+
653
+
654
+
655
+
656
+
657
+
658
+
659
+
660
+ <span class="summary_desc"><div class='inline'></div></span>
661
+
662
+ </li>
663
+
664
+
665
+ <li class="public ">
666
+ <span class="summary_signature">
667
+
668
+ <a href="#upload_file-instance_method" title="#upload_file (instance method)">#<strong>upload_file</strong>(*file_paths) &#x21d2; Object </a>
669
+
670
+
671
+
672
+ </span>
673
+
674
+
675
+
676
+
677
+
678
+
679
+
680
+
681
+
682
+ <span class="summary_desc"><div class='inline'></div></span>
683
+
684
+ </li>
685
+
686
+
687
+ </ul>
688
+
689
+
690
+
691
+
692
+
693
+
694
+
695
+
696
+
697
+
698
+
699
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="IfPresent.html" title="Puppeteer::IfPresent (module)">IfPresent</a></span></h3>
700
+ <p class="inherited"><span class='object_link'><a href="IfPresent.html#if_present-instance_method" title="Puppeteer::IfPresent#if_present (method)">#if_present</a></span></p>
701
+
702
+
703
+
704
+
705
+
706
+
707
+
708
+
709
+
710
+ <h3 class="inherited">Methods inherited from <span class='object_link'><a href="JSHandle.html" title="Puppeteer::JSHandle (class)">JSHandle</a></span></h3>
711
+ <p class="inherited"><span class='object_link'><a href="JSHandle.html#async_evaluate-instance_method" title="Puppeteer::JSHandle#async_evaluate (method)">#async_evaluate</a></span>, <span class='object_link'><a href="JSHandle.html#async_evaluate_handle-instance_method" title="Puppeteer::JSHandle#async_evaluate_handle (method)">#async_evaluate_handle</a></span>, <span class='object_link'><a href="JSHandle.html#create-class_method" title="Puppeteer::JSHandle.create (method)">create</a></span>, <span class='object_link'><a href="JSHandle.html#dispose-instance_method" title="Puppeteer::JSHandle#dispose (method)">#dispose</a></span>, <span class='object_link'><a href="JSHandle.html#disposed%3F-instance_method" title="Puppeteer::JSHandle#disposed? (method)">#disposed?</a></span>, <span class='object_link'><a href="JSHandle.html#evaluate-instance_method" title="Puppeteer::JSHandle#evaluate (method)">#evaluate</a></span>, <span class='object_link'><a href="JSHandle.html#evaluate_handle-instance_method" title="Puppeteer::JSHandle#evaluate_handle (method)">#evaluate_handle</a></span>, <span class='object_link'><a href="JSHandle.html#execution_context-instance_method" title="Puppeteer::JSHandle#execution_context (method)">#execution_context</a></span>, <span class='object_link'><a href="JSHandle.html#json_value-instance_method" title="Puppeteer::JSHandle#json_value (method)">#json_value</a></span>, <span class='object_link'><a href="JSHandle.html#properties-instance_method" title="Puppeteer::JSHandle#properties (method)">#properties</a></span></p>
712
+ <div id="constructor_details" class="method_details_list">
713
+ <h2>Constructor Details</h2>
714
+
715
+ <div class="method_details first">
716
+ <h3 class="signature first" id="initialize-instance_method">
717
+
718
+ #<strong>initialize</strong>(context:, client:, remote_object:, page:, frame_manager:) &#x21d2; <tt><span class='object_link'><a href="" title="Puppeteer::ElementHandle (class)">ElementHandle</a></span></tt>
719
+
720
+
721
+
722
+
723
+
724
+ </h3><div class="docstring">
725
+ <div class="discussion">
726
+
727
+ <p>Returns a new instance of ElementHandle.</p>
728
+
729
+
730
+ </div>
731
+ </div>
732
+ <div class="tags">
733
+ <p class="tag_title">Parameters:</p>
734
+ <ul class="param">
735
+
736
+ <li>
737
+
738
+ <span class='name'>context</span>
739
+
740
+
741
+ <span class='type'>(<tt><span class='object_link'><a href="ExecutionContext.html" title="Puppeteer::ExecutionContext (class)">Puppeteer::ExecutionContext</a></span></tt>)</span>
742
+
743
+
744
+
745
+ </li>
746
+
747
+ <li>
748
+
749
+ <span class='name'>client</span>
750
+
751
+
752
+ <span class='type'>(<tt><span class='object_link'><a href="CDPSession.html" title="Puppeteer::CDPSession (class)">Puppeteer::CDPSession</a></span></tt>)</span>
753
+
754
+
755
+
756
+ </li>
757
+
758
+ <li>
759
+
760
+ <span class='name'>remote_object</span>
761
+
762
+
763
+ <span class='type'>(<tt><span class='object_link'><a href="RemoteObject.html" title="Puppeteer::RemoteObject (class)">Puppeteer::RemoteObject</a></span></tt>)</span>
764
+
765
+
766
+
767
+ </li>
768
+
769
+ <li>
770
+
771
+ <span class='name'>page</span>
772
+
773
+
774
+ <span class='type'>(<tt><span class='object_link'><a href="Page.html" title="Puppeteer::Page (class)">Puppeteer::Page</a></span></tt>)</span>
775
+
776
+
777
+
778
+ </li>
779
+
780
+ <li>
781
+
782
+ <span class='name'>frame_manager</span>
783
+
784
+
785
+ <span class='type'>(<tt><span class='object_link'><a href="FrameManager.html" title="Puppeteer::FrameManager (class)">Puppeteer::FrameManager</a></span></tt>)</span>
786
+
787
+
788
+
789
+ </li>
790
+
791
+ </ul>
792
+
793
+
794
+ </div><table class="source_code">
795
+ <tr>
796
+ <td>
797
+ <pre class="lines">
798
+
799
+
800
+ 14
801
+ 15
802
+ 16
803
+ 17
804
+ 18
805
+ 19</pre>
806
+ </td>
807
+ <td>
808
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 14</span>
809
+
810
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>context:</span><span class='comma'>,</span> <span class='label'>client:</span><span class='comma'>,</span> <span class='label'>remote_object:</span><span class='comma'>,</span> <span class='label'>page:</span><span class='comma'>,</span> <span class='label'>frame_manager:</span><span class='rparen'>)</span>
811
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='comma'>,</span> <span class='label'>client:</span> <span class='id identifier rubyid_client'>client</span><span class='comma'>,</span> <span class='label'>remote_object:</span> <span class='id identifier rubyid_remote_object'>remote_object</span><span class='rparen'>)</span>
812
+ <span class='ivar'>@page</span> <span class='op'>=</span> <span class='id identifier rubyid_page'>page</span>
813
+ <span class='ivar'>@frame_manager</span> <span class='op'>=</span> <span class='id identifier rubyid_frame_manager'>frame_manager</span>
814
+ <span class='ivar'>@disposed</span> <span class='op'>=</span> <span class='kw'>false</span>
815
+ <span class='kw'>end</span></pre>
816
+ </td>
817
+ </tr>
818
+ </table>
819
+ </div>
820
+
821
+ </div>
822
+
823
+
824
+ <div id="instance_method_details" class="method_details_list">
825
+ <h2>Instance Method Details</h2>
826
+
827
+
828
+ <div class="method_details first">
829
+ <h3 class="signature first" id="as_element-instance_method">
830
+
831
+ #<strong>as_element</strong> &#x21d2; <tt>Object</tt>
832
+
833
+
834
+
835
+
836
+
837
+ </h3><table class="source_code">
838
+ <tr>
839
+ <td>
840
+ <pre class="lines">
841
+
842
+
843
+ 21
844
+ 22
845
+ 23</pre>
846
+ </td>
847
+ <td>
848
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 21</span>
849
+
850
+ <span class='kw'>def</span> <span class='id identifier rubyid_as_element'>as_element</span>
851
+ <span class='kw'>self</span>
852
+ <span class='kw'>end</span></pre>
853
+ </td>
854
+ </tr>
855
+ </table>
856
+ </div>
857
+
858
+ <div class="method_details ">
859
+ <h3 class="signature " id="async_press-instance_method">
860
+
861
+ #<strong>async_press</strong> &#x21d2; <tt>Future</tt>
862
+
863
+
864
+
865
+
866
+
867
+ </h3><div class="docstring">
868
+ <div class="discussion">
869
+
870
+
871
+ </div>
872
+ </div>
873
+ <div class="tags">
874
+ <p class="tag_title">Parameters:</p>
875
+ <ul class="param">
876
+
877
+ <li>
878
+
879
+ <span class='name'>key</span>
880
+
881
+
882
+ <span class='type'>(<tt>String</tt>)</span>
883
+
884
+
885
+
886
+ </li>
887
+
888
+ <li>
889
+
890
+ <span class='name'>delay</span>
891
+
892
+
893
+ <span class='type'>(<tt>number|nil</tt>)</span>
894
+
895
+
896
+
897
+ </li>
898
+
899
+ </ul>
900
+
901
+ <p class="tag_title">Returns:</p>
902
+ <ul class="return">
903
+
904
+ <li>
905
+
906
+
907
+ <span class='type'>(<tt>Future</tt>)</span>
908
+
909
+
910
+
911
+ </li>
912
+
913
+ </ul>
914
+
915
+ </div><table class="source_code">
916
+ <tr>
917
+ <td>
918
+ <pre class="lines">
919
+
920
+
921
+ 234
922
+ 235
923
+ 236</pre>
924
+ </td>
925
+ <td>
926
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 234</span>
927
+
928
+ <span class='id identifier rubyid_async'>async</span> <span class='kw'>def</span> <span class='id identifier rubyid_async_press'>async_press</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
929
+ <span class='id identifier rubyid_press'>press</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='id identifier rubyid_delay'>delay</span><span class='rparen'>)</span>
930
+ <span class='kw'>end</span></pre>
931
+ </td>
932
+ </tr>
933
+ </table>
934
+ </div>
935
+
936
+ <div class="method_details ">
937
+ <h3 class="signature " id="async_Seval-instance_method">
938
+
939
+ #<strong>async_Seval</strong> &#x21d2; <tt>Object</tt>
940
+
941
+
942
+
943
+
944
+
945
+ </h3><div class="docstring">
946
+ <div class="discussion">
947
+
948
+ <p>`$eval()` in JavaScript. $ is not allowed to use as a method name in Ruby.</p>
949
+
950
+
951
+ </div>
952
+ </div>
953
+ <div class="tags">
954
+ <p class="tag_title">Parameters:</p>
955
+ <ul class="param">
956
+
957
+ <li>
958
+
959
+ <span class='name'>selector</span>
960
+
961
+
962
+ <span class='type'>(<tt>String</tt>)</span>
963
+
964
+
965
+
966
+ </li>
967
+
968
+ <li>
969
+
970
+ <span class='name'>page_function</span>
971
+
972
+
973
+ <span class='type'>(<tt>String</tt>)</span>
974
+
975
+
976
+
977
+ </li>
978
+
979
+ </ul>
980
+
981
+ <p class="tag_title">Returns:</p>
982
+ <ul class="return">
983
+
984
+ <li>
985
+
986
+
987
+ <span class='type'>(<tt>Object</tt>)</span>
988
+
989
+
990
+
991
+ </li>
992
+
993
+ </ul>
994
+
995
+ </div><table class="source_code">
996
+ <tr>
997
+ <td>
998
+ <pre class="lines">
999
+
1000
+
1001
+ 363
1002
+ 364
1003
+ 365</pre>
1004
+ </td>
1005
+ <td>
1006
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 363</span>
1007
+
1008
+ <span class='id identifier rubyid_async'>async</span> <span class='kw'>def</span> <span class='id identifier rubyid_async_Seval'>async_Seval</span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='comma'>,</span> <span class='id identifier rubyid_page_function'>page_function</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
1009
+ <span class='const'><span class='object_link'><a href="#Seval-instance_method" title="Puppeteer::ElementHandle#Seval (method)">Seval</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='comma'>,</span> <span class='id identifier rubyid_page_function'>page_function</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
1010
+ <span class='kw'>end</span></pre>
1011
+ </td>
1012
+ </tr>
1013
+ </table>
1014
+ </div>
1015
+
1016
+ <div class="method_details ">
1017
+ <h3 class="signature " id="async_SSeval-instance_method">
1018
+
1019
+ #<strong>async_SSeval</strong> &#x21d2; <tt>Object</tt>
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+ </h3><div class="docstring">
1026
+ <div class="discussion">
1027
+
1028
+ <p>`$$eval()` in JavaScript. $ is not allowed to use as a method name in Ruby.</p>
1029
+
1030
+
1031
+ </div>
1032
+ </div>
1033
+ <div class="tags">
1034
+ <p class="tag_title">Parameters:</p>
1035
+ <ul class="param">
1036
+
1037
+ <li>
1038
+
1039
+ <span class='name'>selector</span>
1040
+
1041
+
1042
+ <span class='type'>(<tt>String</tt>)</span>
1043
+
1044
+
1045
+
1046
+ </li>
1047
+
1048
+ <li>
1049
+
1050
+ <span class='name'>page_function</span>
1051
+
1052
+
1053
+ <span class='type'>(<tt>String</tt>)</span>
1054
+
1055
+
1056
+
1057
+ </li>
1058
+
1059
+ </ul>
1060
+
1061
+ <p class="tag_title">Returns:</p>
1062
+ <ul class="return">
1063
+
1064
+ <li>
1065
+
1066
+
1067
+ <span class='type'>(<tt>Object</tt>)</span>
1068
+
1069
+
1070
+
1071
+ </li>
1072
+
1073
+ </ul>
1074
+
1075
+ </div><table class="source_code">
1076
+ <tr>
1077
+ <td>
1078
+ <pre class="lines">
1079
+
1080
+
1081
+ 386
1082
+ 387
1083
+ 388</pre>
1084
+ </td>
1085
+ <td>
1086
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 386</span>
1087
+
1088
+ <span class='id identifier rubyid_async'>async</span> <span class='kw'>def</span> <span class='id identifier rubyid_async_SSeval'>async_SSeval</span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='comma'>,</span> <span class='id identifier rubyid_page_function'>page_function</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
1089
+ <span class='const'><span class='object_link'><a href="#SSeval-instance_method" title="Puppeteer::ElementHandle#SSeval (method)">SSeval</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='comma'>,</span> <span class='id identifier rubyid_page_function'>page_function</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
1090
+ <span class='kw'>end</span></pre>
1091
+ </td>
1092
+ </tr>
1093
+ </table>
1094
+ </div>
1095
+
1096
+ <div class="method_details ">
1097
+ <h3 class="signature " id="async_type_text-instance_method">
1098
+
1099
+ #<strong>async_type_text</strong> &#x21d2; <tt>Future</tt>
1100
+
1101
+
1102
+
1103
+
1104
+
1105
+ </h3><div class="docstring">
1106
+ <div class="discussion">
1107
+
1108
+
1109
+ </div>
1110
+ </div>
1111
+ <div class="tags">
1112
+ <p class="tag_title">Parameters:</p>
1113
+ <ul class="param">
1114
+
1115
+ <li>
1116
+
1117
+ <span class='name'>text</span>
1118
+
1119
+
1120
+ <span class='type'>(<tt>String</tt>)</span>
1121
+
1122
+
1123
+
1124
+ </li>
1125
+
1126
+ <li>
1127
+
1128
+ <span class='name'>delay</span>
1129
+
1130
+
1131
+ <span class='type'>(<tt>number|nil</tt>)</span>
1132
+
1133
+
1134
+
1135
+ </li>
1136
+
1137
+ </ul>
1138
+
1139
+ <p class="tag_title">Returns:</p>
1140
+ <ul class="return">
1141
+
1142
+ <li>
1143
+
1144
+
1145
+ <span class='type'>(<tt>Future</tt>)</span>
1146
+
1147
+
1148
+
1149
+ </li>
1150
+
1151
+ </ul>
1152
+
1153
+ </div><table class="source_code">
1154
+ <tr>
1155
+ <td>
1156
+ <pre class="lines">
1157
+
1158
+
1159
+ 220
1160
+ 221
1161
+ 222</pre>
1162
+ </td>
1163
+ <td>
1164
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 220</span>
1165
+
1166
+ <span class='id identifier rubyid_async'>async</span> <span class='kw'>def</span> <span class='id identifier rubyid_async_type_text'>async_type_text</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1167
+ <span class='id identifier rubyid_type_text'>type_text</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='id identifier rubyid_delay'>delay</span><span class='rparen'>)</span>
1168
+ <span class='kw'>end</span></pre>
1169
+ </td>
1170
+ </tr>
1171
+ </table>
1172
+ </div>
1173
+
1174
+ <div class="method_details ">
1175
+ <h3 class="signature " id="bounding_box-instance_method">
1176
+
1177
+ #<strong>bounding_box</strong> &#x21d2; <tt><span class='object_link'><a href="ElementHandle/BoundingBox.html" title="Puppeteer::ElementHandle::BoundingBox (class)">BoundingBox</a></span>|nil</tt>
1178
+
1179
+
1180
+
1181
+
1182
+
1183
+ </h3><div class="docstring">
1184
+ <div class="discussion">
1185
+
1186
+
1187
+ </div>
1188
+ </div>
1189
+ <div class="tags">
1190
+
1191
+ <p class="tag_title">Returns:</p>
1192
+ <ul class="return">
1193
+
1194
+ <li>
1195
+
1196
+
1197
+ <span class='type'>(<tt><span class='object_link'><a href="ElementHandle/BoundingBox.html" title="Puppeteer::ElementHandle::BoundingBox (class)">BoundingBox</a></span>|nil</tt>)</span>
1198
+
1199
+
1200
+
1201
+ </li>
1202
+
1203
+ </ul>
1204
+
1205
+ </div><table class="source_code">
1206
+ <tr>
1207
+ <td>
1208
+ <pre class="lines">
1209
+
1210
+
1211
+ 239
1212
+ 240
1213
+ 241
1214
+ 242
1215
+ 243
1216
+ 244
1217
+ 245
1218
+ 246
1219
+ 247
1220
+ 248
1221
+ 249
1222
+ 250
1223
+ 251
1224
+ 252</pre>
1225
+ </td>
1226
+ <td>
1227
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 239</span>
1228
+
1229
+ <span class='kw'>def</span> <span class='id identifier rubyid_bounding_box'>bounding_box</span>
1230
+ <span class='id identifier rubyid_if_present'>if_present</span><span class='lparen'>(</span><span class='id identifier rubyid_box_model'>box_model</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_result_model'>result_model</span><span class='op'>|</span>
1231
+ <span class='id identifier rubyid_quads'>quads</span> <span class='op'>=</span> <span class='id identifier rubyid_result_model'>result_model</span><span class='period'>.</span><span class='id identifier rubyid_border'>border</span>
1232
+
1233
+ <span class='id identifier rubyid_x'>x</span> <span class='op'>=</span> <span class='id identifier rubyid_quads'>quads</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:x</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span>
1234
+ <span class='id identifier rubyid_y'>y</span> <span class='op'>=</span> <span class='id identifier rubyid_quads'>quads</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:y</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span>
1235
+ <span class='const'><span class='object_link'><a href="ElementHandle/BoundingBox.html" title="Puppeteer::ElementHandle::BoundingBox (class)">BoundingBox</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ElementHandle/BoundingBox.html#initialize-instance_method" title="Puppeteer::ElementHandle::BoundingBox#initialize (method)">new</a></span></span><span class='lparen'>(</span>
1236
+ <span class='label'>x:</span> <span class='id identifier rubyid_x'>x</span><span class='comma'>,</span>
1237
+ <span class='label'>y:</span> <span class='id identifier rubyid_y'>y</span><span class='comma'>,</span>
1238
+ <span class='label'>width:</span> <span class='id identifier rubyid_quads'>quads</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:x</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span> <span class='op'>-</span> <span class='id identifier rubyid_x'>x</span><span class='comma'>,</span>
1239
+ <span class='label'>height:</span> <span class='id identifier rubyid_quads'>quads</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:y</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span> <span class='op'>-</span> <span class='id identifier rubyid_y'>y</span><span class='comma'>,</span>
1240
+ <span class='rparen'>)</span>
1241
+ <span class='kw'>end</span>
1242
+ <span class='kw'>end</span></pre>
1243
+ </td>
1244
+ </tr>
1245
+ </table>
1246
+ </div>
1247
+
1248
+ <div class="method_details ">
1249
+ <h3 class="signature " id="box_model-instance_method">
1250
+
1251
+ #<strong>box_model</strong> &#x21d2; <tt><span class='object_link'><a href="ElementHandle/BoxModel.html" title="Puppeteer::ElementHandle::BoxModel (class)">BoxModel</a></span>|nil</tt>
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+ </h3><div class="docstring">
1258
+ <div class="discussion">
1259
+
1260
+
1261
+ </div>
1262
+ </div>
1263
+ <div class="tags">
1264
+
1265
+ <p class="tag_title">Returns:</p>
1266
+ <ul class="return">
1267
+
1268
+ <li>
1269
+
1270
+
1271
+ <span class='type'>(<tt><span class='object_link'><a href="ElementHandle/BoxModel.html" title="Puppeteer::ElementHandle::BoxModel (class)">BoxModel</a></span>|nil</tt>)</span>
1272
+
1273
+
1274
+
1275
+ </li>
1276
+
1277
+ </ul>
1278
+
1279
+ </div><table class="source_code">
1280
+ <tr>
1281
+ <td>
1282
+ <pre class="lines">
1283
+
1284
+
1285
+ 255
1286
+ 256
1287
+ 257
1288
+ 258
1289
+ 259</pre>
1290
+ </td>
1291
+ <td>
1292
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 255</span>
1293
+
1294
+ <span class='kw'>def</span> <span class='id identifier rubyid_box_model'>box_model</span>
1295
+ <span class='id identifier rubyid_if_present'>if_present</span><span class='lparen'>(</span><span class='ivar'>@remote_object</span><span class='period'>.</span><span class='id identifier rubyid_box_model'>box_model</span><span class='lparen'>(</span><span class='ivar'>@client</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_result'>result</span><span class='op'>|</span>
1296
+ <span class='const'><span class='object_link'><a href="ElementHandle/BoxModel.html" title="Puppeteer::ElementHandle::BoxModel (class)">BoxModel</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ElementHandle/BoxModel.html#initialize-instance_method" title="Puppeteer::ElementHandle::BoxModel#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>model</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
1297
+ <span class='kw'>end</span>
1298
+ <span class='kw'>end</span></pre>
1299
+ </td>
1300
+ </tr>
1301
+ </table>
1302
+ </div>
1303
+
1304
+ <div class="method_details ">
1305
+ <h3 class="signature " id="click-instance_method">
1306
+
1307
+ #<strong>click</strong>(delay: nil, button: nil, click_count: nil) &#x21d2; <tt>Object</tt>
1308
+
1309
+
1310
+
1311
+
1312
+
1313
+ </h3><div class="docstring">
1314
+ <div class="discussion">
1315
+
1316
+
1317
+ </div>
1318
+ </div>
1319
+ <div class="tags">
1320
+ <p class="tag_title">Parameters:</p>
1321
+ <ul class="param">
1322
+
1323
+ <li>
1324
+
1325
+ <span class='name'>delay</span>
1326
+
1327
+
1328
+ <span class='type'>(<tt>Number</tt>)</span>
1329
+
1330
+
1331
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
1332
+
1333
+
1334
+ </li>
1335
+
1336
+ <li>
1337
+
1338
+ <span class='name'>button</span>
1339
+
1340
+
1341
+ <span class='type'>(<tt>String</tt>)</span>
1342
+
1343
+
1344
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
1345
+
1346
+
1347
+ &mdash;
1348
+ <div class='inline'>
1349
+ <p>“left”|“right”|“middle”</p>
1350
+ </div>
1351
+
1352
+ </li>
1353
+
1354
+ <li>
1355
+
1356
+ <span class='name'>click_count</span>
1357
+
1358
+
1359
+ <span class='type'>(<tt>Number</tt>)</span>
1360
+
1361
+
1362
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
1363
+
1364
+
1365
+ </li>
1366
+
1367
+ </ul>
1368
+
1369
+
1370
+ </div><table class="source_code">
1371
+ <tr>
1372
+ <td>
1373
+ <pre class="lines">
1374
+
1375
+
1376
+ 117
1377
+ 118
1378
+ 119
1379
+ 120
1380
+ 121</pre>
1381
+ </td>
1382
+ <td>
1383
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 117</span>
1384
+
1385
+ <span class='kw'>def</span> <span class='id identifier rubyid_click'>click</span><span class='lparen'>(</span><span class='label'>delay:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>button:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>click_count:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1386
+ <span class='id identifier rubyid_scroll_into_view_if_needed'>scroll_into_view_if_needed</span>
1387
+ <span class='id identifier rubyid_point'>point</span> <span class='op'>=</span> <span class='id identifier rubyid_clickable_point'>clickable_point</span>
1388
+ <span class='ivar'>@page</span><span class='period'>.</span><span class='id identifier rubyid_mouse'>mouse</span><span class='period'>.</span><span class='id identifier rubyid_click'>click</span><span class='lparen'>(</span><span class='id identifier rubyid_point'>point</span><span class='period'>.</span><span class='id identifier rubyid_x'>x</span><span class='comma'>,</span> <span class='id identifier rubyid_point'>point</span><span class='period'>.</span><span class='id identifier rubyid_y'>y</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='id identifier rubyid_delay'>delay</span><span class='comma'>,</span> <span class='label'>button:</span> <span class='id identifier rubyid_button'>button</span><span class='comma'>,</span> <span class='label'>click_count:</span> <span class='id identifier rubyid_click_count'>click_count</span><span class='rparen'>)</span>
1389
+ <span class='kw'>end</span></pre>
1390
+ </td>
1391
+ </tr>
1392
+ </table>
1393
+ </div>
1394
+
1395
+ <div class="method_details ">
1396
+ <h3 class="signature " id="clickable_point-instance_method">
1397
+
1398
+ #<strong>clickable_point</strong> &#x21d2; <tt>Object</tt>
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+ </h3><table class="source_code">
1405
+ <tr>
1406
+ <td>
1407
+ <pre class="lines">
1408
+
1409
+
1410
+ 64
1411
+ 65
1412
+ 66
1413
+ 67
1414
+ 68
1415
+ 69
1416
+ 70
1417
+ 71
1418
+ 72
1419
+ 73
1420
+ 74
1421
+ 75
1422
+ 76
1423
+ 77
1424
+ 78
1425
+ 79
1426
+ 80
1427
+ 81
1428
+ 82
1429
+ 83
1430
+ 84
1431
+ 85</pre>
1432
+ </td>
1433
+ <td>
1434
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 64</span>
1435
+
1436
+ <span class='kw'>def</span> <span class='id identifier rubyid_clickable_point'>clickable_point</span>
1437
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='ivar'>@remote_object</span><span class='period'>.</span><span class='id identifier rubyid_content_quads'>content_quads</span><span class='lparen'>(</span><span class='ivar'>@client</span><span class='rparen'>)</span>
1438
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_result'>result</span> <span class='op'>||</span> <span class='id identifier rubyid_result'>result</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>quads</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1439
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ElementHandle/ElementNotVisibleError.html" title="Puppeteer::ElementHandle::ElementNotVisibleError (class)">ElementNotVisibleError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ElementHandle/ElementNotVisibleError.html#initialize-instance_method" title="Puppeteer::ElementHandle::ElementNotVisibleError#initialize (method)">new</a></span></span>
1440
+ <span class='kw'>end</span>
1441
+
1442
+ <span class='comment'># Filter out quads that have too small area to click into.
1443
+ </span> <span class='id identifier rubyid_layout_metrics'>layout_metrics</span> <span class='op'>=</span> <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_send_message'>send_message</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Page.getLayoutMetrics</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1444
+ <span class='id identifier rubyid_client_width'>client_width</span> <span class='op'>=</span> <span class='id identifier rubyid_layout_metrics'>layout_metrics</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>layoutViewport</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clientWidth</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
1445
+ <span class='id identifier rubyid_client_height'>client_height</span> <span class='op'>=</span> <span class='id identifier rubyid_layout_metrics'>layout_metrics</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>layoutViewport</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clientHeight</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
1446
+
1447
+ <span class='id identifier rubyid_quads'>quads</span> <span class='op'>=</span> <span class='id identifier rubyid_result'>result</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>quads</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span>
1448
+ <span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_quad'>quad</span><span class='op'>|</span> <span class='id identifier rubyid_from_protocol_quad'>from_protocol_quad</span><span class='lparen'>(</span><span class='id identifier rubyid_quad'>quad</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span>
1449
+ <span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_quad'>quad</span><span class='op'>|</span> <span class='id identifier rubyid_intersect_quad_with_viewport'>intersect_quad_with_viewport</span><span class='lparen'>(</span><span class='id identifier rubyid_quad'>quad</span><span class='comma'>,</span> <span class='id identifier rubyid_client_width'>client_width</span><span class='comma'>,</span> <span class='id identifier rubyid_client_height'>client_height</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span>
1450
+ <span class='id identifier rubyid_select'>select</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_quad'>quad</span><span class='op'>|</span> <span class='id identifier rubyid_compute_quad_area'>compute_quad_area</span><span class='lparen'>(</span><span class='id identifier rubyid_quad'>quad</span><span class='rparen'>)</span> <span class='op'>&gt;</span> <span class='int'>1</span> <span class='rbrace'>}</span>
1451
+ <span class='kw'>if</span> <span class='id identifier rubyid_quads'>quads</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1452
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ElementHandle/ElementNotVisibleError.html" title="Puppeteer::ElementHandle::ElementNotVisibleError (class)">ElementNotVisibleError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ElementHandle/ElementNotVisibleError.html#initialize-instance_method" title="Puppeteer::ElementHandle::ElementNotVisibleError#initialize (method)">new</a></span></span>
1453
+ <span class='kw'>end</span>
1454
+
1455
+ <span class='comment'># Return the middle point of the first quad.
1456
+ </span> <span class='id identifier rubyid_quads'>quads</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='symbol'>:+</span><span class='rparen'>)</span> <span class='op'>/</span> <span class='int'>4</span>
1457
+ <span class='kw'>end</span></pre>
1458
+ </td>
1459
+ </tr>
1460
+ </table>
1461
+ </div>
1462
+
1463
+ <div class="method_details ">
1464
+ <h3 class="signature " id="content_frame-instance_method">
1465
+
1466
+ #<strong>content_frame</strong> &#x21d2; <tt>Object</tt>
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+ </h3><table class="source_code">
1473
+ <tr>
1474
+ <td>
1475
+ <pre class="lines">
1476
+
1477
+
1478
+ 25
1479
+ 26
1480
+ 27
1481
+ 28
1482
+ 29
1483
+ 30
1484
+ 31
1485
+ 32
1486
+ 33</pre>
1487
+ </td>
1488
+ <td>
1489
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 25</span>
1490
+
1491
+ <span class='kw'>def</span> <span class='id identifier rubyid_content_frame'>content_frame</span>
1492
+ <span class='id identifier rubyid_node_info'>node_info</span> <span class='op'>=</span> <span class='ivar'>@remote_object</span><span class='period'>.</span><span class='id identifier rubyid_node_info'>node_info</span>
1493
+ <span class='id identifier rubyid_frame_id'>frame_id</span> <span class='op'>=</span> <span class='id identifier rubyid_node_info'>node_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>node</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>frameId</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
1494
+ <span class='kw'>if</span> <span class='id identifier rubyid_frame_id'>frame_id</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span>
1495
+ <span class='ivar'>@frame_manager</span><span class='period'>.</span><span class='id identifier rubyid_frame'>frame</span><span class='lparen'>(</span><span class='id identifier rubyid_frame_id'>frame_id</span><span class='rparen'>)</span>
1496
+ <span class='kw'>else</span>
1497
+ <span class='kw'>nil</span>
1498
+ <span class='kw'>end</span>
1499
+ <span class='kw'>end</span></pre>
1500
+ </td>
1501
+ </tr>
1502
+ </table>
1503
+ </div>
1504
+
1505
+ <div class="method_details ">
1506
+ <h3 class="signature " id="focus-instance_method">
1507
+
1508
+ #<strong>focus</strong> &#x21d2; <tt>Object</tt>
1509
+
1510
+
1511
+
1512
+
1513
+
1514
+ </h3><table class="source_code">
1515
+ <tr>
1516
+ <td>
1517
+ <pre class="lines">
1518
+
1519
+
1520
+ 202
1521
+ 203
1522
+ 204</pre>
1523
+ </td>
1524
+ <td>
1525
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 202</span>
1526
+
1527
+ <span class='kw'>def</span> <span class='id identifier rubyid_focus'>focus</span>
1528
+ <span class='id identifier rubyid_evaluate'>evaluate</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>element =&gt; element.focus()</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1529
+ <span class='kw'>end</span></pre>
1530
+ </td>
1531
+ </tr>
1532
+ </table>
1533
+ </div>
1534
+
1535
+ <div class="method_details ">
1536
+ <h3 class="signature " id="press-instance_method">
1537
+
1538
+ #<strong>press</strong>(key, delay: nil) &#x21d2; <tt>Object</tt>
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+ </h3><div class="docstring">
1545
+ <div class="discussion">
1546
+
1547
+
1548
+ </div>
1549
+ </div>
1550
+ <div class="tags">
1551
+ <p class="tag_title">Parameters:</p>
1552
+ <ul class="param">
1553
+
1554
+ <li>
1555
+
1556
+ <span class='name'>key</span>
1557
+
1558
+
1559
+ <span class='type'>(<tt>String</tt>)</span>
1560
+
1561
+
1562
+
1563
+ </li>
1564
+
1565
+ <li>
1566
+
1567
+ <span class='name'>delay</span>
1568
+
1569
+
1570
+ <span class='type'>(<tt>number|nil</tt>)</span>
1571
+
1572
+
1573
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
1574
+
1575
+
1576
+ </li>
1577
+
1578
+ </ul>
1579
+
1580
+
1581
+ </div><table class="source_code">
1582
+ <tr>
1583
+ <td>
1584
+ <pre class="lines">
1585
+
1586
+
1587
+ 226
1588
+ 227
1589
+ 228
1590
+ 229</pre>
1591
+ </td>
1592
+ <td>
1593
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 226</span>
1594
+
1595
+ <span class='kw'>def</span> <span class='id identifier rubyid_press'>press</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1596
+ <span class='id identifier rubyid_focus'>focus</span>
1597
+ <span class='ivar'>@page</span><span class='period'>.</span><span class='id identifier rubyid_keyboard'>keyboard</span><span class='period'>.</span><span class='id identifier rubyid_press'>press</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='id identifier rubyid_delay'>delay</span><span class='rparen'>)</span>
1598
+ <span class='kw'>end</span></pre>
1599
+ </td>
1600
+ </tr>
1601
+ </table>
1602
+ </div>
1603
+
1604
+ <div class="method_details ">
1605
+ <h3 class="signature " id="S-instance_method">
1606
+
1607
+ #<strong>S</strong>(selector) &#x21d2; <tt>Object</tt>
1608
+
1609
+
1610
+
1611
+
1612
+
1613
+ </h3><div class="docstring">
1614
+ <div class="discussion">
1615
+
1616
+ <p>`$()` in JavaScript. $ is not allowed to use as a method name in Ruby.</p>
1617
+
1618
+
1619
+ </div>
1620
+ </div>
1621
+ <div class="tags">
1622
+ <p class="tag_title">Parameters:</p>
1623
+ <ul class="param">
1624
+
1625
+ <li>
1626
+
1627
+ <span class='name'>selector</span>
1628
+
1629
+
1630
+ <span class='type'>(<tt>String</tt>)</span>
1631
+
1632
+
1633
+
1634
+ </li>
1635
+
1636
+ </ul>
1637
+
1638
+
1639
+ </div><table class="source_code">
1640
+ <tr>
1641
+ <td>
1642
+ <pre class="lines">
1643
+
1644
+
1645
+ 312
1646
+ 313
1647
+ 314
1648
+ 315
1649
+ 316
1650
+ 317
1651
+ 318
1652
+ 319
1653
+ 320
1654
+ 321
1655
+ 322
1656
+ 323
1657
+ 324</pre>
1658
+ </td>
1659
+ <td>
1660
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 312</span>
1661
+
1662
+ <span class='kw'>def</span> <span class='const'>S</span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='rparen'>)</span>
1663
+ <span class='id identifier rubyid_handle'>handle</span> <span class='op'>=</span> <span class='id identifier rubyid_evaluate_handle'>evaluate_handle</span><span class='lparen'>(</span>
1664
+ <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>(element, selector) =&gt; element.querySelector(selector)</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
1665
+ <span class='id identifier rubyid_selector'>selector</span><span class='comma'>,</span>
1666
+ <span class='rparen'>)</span>
1667
+ <span class='id identifier rubyid_element'>element</span> <span class='op'>=</span> <span class='id identifier rubyid_handle'>handle</span><span class='period'>.</span><span class='id identifier rubyid_as_element'>as_element</span>
1668
+
1669
+ <span class='kw'>if</span> <span class='id identifier rubyid_element'>element</span>
1670
+ <span class='kw'>return</span> <span class='id identifier rubyid_element'>element</span>
1671
+ <span class='kw'>end</span>
1672
+ <span class='id identifier rubyid_handle'>handle</span><span class='period'>.</span><span class='id identifier rubyid_dispose'>dispose</span>
1673
+ <span class='kw'>nil</span>
1674
+ <span class='kw'>end</span></pre>
1675
+ </td>
1676
+ </tr>
1677
+ </table>
1678
+ </div>
1679
+
1680
+ <div class="method_details ">
1681
+ <h3 class="signature " id="screenshot-instance_method">
1682
+
1683
+ #<strong>screenshot</strong>(options = {}) &#x21d2; <tt>Object</tt>
1684
+
1685
+
1686
+
1687
+
1688
+
1689
+ </h3><table class="source_code">
1690
+ <tr>
1691
+ <td>
1692
+ <pre class="lines">
1693
+
1694
+
1695
+ 261
1696
+ 262
1697
+ 263
1698
+ 264
1699
+ 265
1700
+ 266
1701
+ 267
1702
+ 268
1703
+ 269
1704
+ 270
1705
+ 271
1706
+ 272
1707
+ 273
1708
+ 274
1709
+ 275
1710
+ 276
1711
+ 277
1712
+ 278
1713
+ 279
1714
+ 280
1715
+ 281
1716
+ 282
1717
+ 283
1718
+ 284
1719
+ 285
1720
+ 286
1721
+ 287
1722
+ 288
1723
+ 289
1724
+ 290
1725
+ 291
1726
+ 292
1727
+ 293
1728
+ 294
1729
+ 295
1730
+ 296
1731
+ 297
1732
+ 298
1733
+ 299
1734
+ 300
1735
+ 301
1736
+ 302
1737
+ 303
1738
+ 304
1739
+ 305
1740
+ 306
1741
+ 307
1742
+ 308</pre>
1743
+ </td>
1744
+ <td>
1745
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 261</span>
1746
+
1747
+ <span class='kw'>def</span> <span class='id identifier rubyid_screenshot'>screenshot</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1748
+ <span class='id identifier rubyid_needs_viewport_reset'>needs_viewport_reset</span> <span class='op'>=</span> <span class='kw'>false</span>
1749
+
1750
+ <span class='id identifier rubyid_box'>box</span> <span class='op'>=</span> <span class='id identifier rubyid_bounding_box'>bounding_box</span>
1751
+ <span class='kw'>unless</span> <span class='id identifier rubyid_box'>box</span>
1752
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ElementHandle/ElementNotVisibleError.html" title="Puppeteer::ElementHandle::ElementNotVisibleError (class)">ElementNotVisibleError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ElementHandle/ElementNotVisibleError.html#initialize-instance_method" title="Puppeteer::ElementHandle::ElementNotVisibleError#initialize (method)">new</a></span></span>
1753
+ <span class='kw'>end</span>
1754
+
1755
+ <span class='id identifier rubyid_viewport'>viewport</span> <span class='op'>=</span> <span class='ivar'>@page</span><span class='period'>.</span><span class='id identifier rubyid_viewport'>viewport</span>
1756
+ <span class='kw'>if</span> <span class='id identifier rubyid_viewport'>viewport</span> <span class='op'>&amp;&amp;</span> <span class='lparen'>(</span><span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_width'>width</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_viewport'>viewport</span><span class='period'>.</span><span class='id identifier rubyid_width'>width</span> <span class='op'>||</span> <span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_height'>height</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_viewport'>viewport</span><span class='period'>.</span><span class='id identifier rubyid_height'>height</span><span class='rparen'>)</span>
1757
+ <span class='id identifier rubyid_new_viewport'>new_viewport</span> <span class='op'>=</span> <span class='id identifier rubyid_viewport'>viewport</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
1758
+ <span class='label'>width:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_viewport'>viewport</span><span class='period'>.</span><span class='id identifier rubyid_width'>width</span><span class='comma'>,</span> <span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_width'>width</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span><span class='comma'>,</span>
1759
+ <span class='label'>height:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_viewport'>viewport</span><span class='period'>.</span><span class='id identifier rubyid_height'>height</span><span class='comma'>,</span> <span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_height'>height</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span><span class='comma'>,</span>
1760
+ <span class='rparen'>)</span>
1761
+ <span class='ivar'>@page</span><span class='period'>.</span><span class='id identifier rubyid_viewport'>viewport</span> <span class='op'>=</span> <span class='id identifier rubyid_new_viewport'>new_viewport</span>
1762
+
1763
+ <span class='id identifier rubyid_needs_viewport_reset'>needs_viewport_reset</span> <span class='op'>=</span> <span class='kw'>true</span>
1764
+ <span class='kw'>end</span>
1765
+ <span class='id identifier rubyid_scroll_into_view_if_needed'>scroll_into_view_if_needed</span>
1766
+
1767
+ <span class='id identifier rubyid_box'>box</span> <span class='op'>=</span> <span class='id identifier rubyid_bounding_box'>bounding_box</span>
1768
+ <span class='kw'>unless</span> <span class='id identifier rubyid_box'>box</span>
1769
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ElementHandle/ElementNotVisibleError.html" title="Puppeteer::ElementHandle::ElementNotVisibleError (class)">ElementNotVisibleError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ElementHandle/ElementNotVisibleError.html#initialize-instance_method" title="Puppeteer::ElementHandle::ElementNotVisibleError#initialize (method)">new</a></span></span>
1770
+ <span class='kw'>end</span>
1771
+ <span class='kw'>if</span> <span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_width'>width</span> <span class='op'>==</span> <span class='int'>0</span>
1772
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Node has 0 width.</span><span class='tstring_end'>&#39;</span></span>
1773
+ <span class='kw'>end</span>
1774
+ <span class='kw'>if</span> <span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_height'>height</span> <span class='op'>==</span> <span class='int'>0</span>
1775
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Node has 0 height.</span><span class='tstring_end'>&#39;</span></span>
1776
+ <span class='kw'>end</span>
1777
+
1778
+ <span class='id identifier rubyid_layout_metrics'>layout_metrics</span> <span class='op'>=</span> <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_send_message'>send_message</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Page.getLayoutMetrics</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1779
+ <span class='id identifier rubyid_page_x'>page_x</span> <span class='op'>=</span> <span class='id identifier rubyid_layout_metrics'>layout_metrics</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>layoutViewport</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>pageX</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
1780
+ <span class='id identifier rubyid_page_y'>page_y</span> <span class='op'>=</span> <span class='id identifier rubyid_layout_metrics'>layout_metrics</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>layoutViewport</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>pageY</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
1781
+
1782
+ <span class='id identifier rubyid_clip'>clip</span> <span class='op'>=</span> <span class='lbrace'>{</span>
1783
+ <span class='label'>x:</span> <span class='id identifier rubyid_page_x'>page_x</span> <span class='op'>+</span> <span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_x'>x</span><span class='comma'>,</span>
1784
+ <span class='label'>y:</span> <span class='id identifier rubyid_page_y'>page_y</span> <span class='op'>+</span> <span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_y'>y</span><span class='comma'>,</span>
1785
+ <span class='label'>width:</span> <span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_width'>width</span><span class='comma'>,</span>
1786
+ <span class='label'>height:</span> <span class='id identifier rubyid_box'>box</span><span class='period'>.</span><span class='id identifier rubyid_height'>height</span><span class='comma'>,</span>
1787
+ <span class='rbrace'>}</span>
1788
+
1789
+ <span class='ivar'>@page</span><span class='period'>.</span><span class='id identifier rubyid_screenshot'>screenshot</span><span class='lparen'>(</span><span class='lbrace'>{</span> <span class='label'>clip:</span> <span class='id identifier rubyid_clip'>clip</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span><span class='rparen'>)</span>
1790
+ <span class='kw'>ensure</span>
1791
+ <span class='kw'>if</span> <span class='id identifier rubyid_needs_viewport_reset'>needs_viewport_reset</span>
1792
+ <span class='ivar'>@page</span><span class='period'>.</span><span class='id identifier rubyid_viewport'>viewport</span> <span class='op'>=</span> <span class='id identifier rubyid_viewport'>viewport</span>
1793
+ <span class='kw'>end</span>
1794
+ <span class='kw'>end</span></pre>
1795
+ </td>
1796
+ </tr>
1797
+ </table>
1798
+ </div>
1799
+
1800
+ <div class="method_details ">
1801
+ <h3 class="signature " id="scroll_into_view_if_needed-instance_method">
1802
+
1803
+ #<strong>scroll_into_view_if_needed</strong> &#x21d2; <tt>Object</tt>
1804
+
1805
+
1806
+
1807
+
1808
+
1809
+ </h3><table class="source_code">
1810
+ <tr>
1811
+ <td>
1812
+ <pre class="lines">
1813
+
1814
+
1815
+ 37
1816
+ 38
1817
+ 39
1818
+ 40
1819
+ 41
1820
+ 42
1821
+ 43
1822
+ 44
1823
+ 45
1824
+ 46
1825
+ 47
1826
+ 48
1827
+ 49
1828
+ 50
1829
+ 51
1830
+ 52
1831
+ 53
1832
+ 54
1833
+ 55
1834
+ 56</pre>
1835
+ </td>
1836
+ <td>
1837
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 37</span>
1838
+
1839
+ <span class='kw'>def</span> <span class='id identifier rubyid_scroll_into_view_if_needed'>scroll_into_view_if_needed</span>
1840
+ <span class='id identifier rubyid_js'>js</span> <span class='op'>=</span> <span class='heredoc_beg'>&lt;&lt;~JAVASCRIPT</span>
1841
+ <span class='tstring_content'> async(element, pageJavascriptEnabled) =&gt; {
1842
+ </span><span class='tstring_content'> if (!element.isConnected)
1843
+ </span><span class='tstring_content'> return &#39;Node is detached from document&#39;;
1844
+ </span><span class='tstring_content'> if (element.nodeType !== Node.ELEMENT_NODE)
1845
+ </span><span class='tstring_content'> return &#39;Node is not of type HTMLElement&#39;;
1846
+ </span><span class='tstring_content'>
1847
+ </span><span class='tstring_content'> element.scrollIntoViewIfNeeded({block: &#39;center&#39;, inline: &#39;center&#39;, behavior: &#39;instant&#39;});
1848
+ </span><span class='tstring_content'> return false;
1849
+ </span><span class='tstring_content'> }
1850
+ </span><span class='heredoc_end'> JAVASCRIPT
1851
+ </span> <span class='id identifier rubyid_error'>error</span> <span class='op'>=</span> <span class='id identifier rubyid_evaluate'>evaluate</span><span class='lparen'>(</span><span class='id identifier rubyid_js'>js</span><span class='comma'>,</span> <span class='ivar'>@page</span><span class='period'>.</span><span class='id identifier rubyid_javascript_enabled'>javascript_enabled</span><span class='rparen'>)</span> <span class='comment'># returns String or false
1852
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_error'>error</span>
1853
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ElementHandle/ScrollIntoViewError.html" title="Puppeteer::ElementHandle::ScrollIntoViewError (class)">ScrollIntoViewError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Puppeteer::ElementHandle#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_error'>error</span><span class='rparen'>)</span>
1854
+ <span class='kw'>end</span>
1855
+ <span class='comment'># clickpoint is often calculated before scrolling is completed.
1856
+ </span> <span class='comment'># So, just sleep about 10 frames
1857
+ </span> <span class='id identifier rubyid_sleep'>sleep</span> <span class='float'>0.16</span>
1858
+ <span class='kw'>end</span></pre>
1859
+ </td>
1860
+ </tr>
1861
+ </table>
1862
+ </div>
1863
+
1864
+ <div class="method_details ">
1865
+ <h3 class="signature " id="select-instance_method">
1866
+
1867
+ #<strong>select</strong>(*values) &#x21d2; <tt>Array&lt;String&gt;</tt>
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+ </h3><div class="docstring">
1874
+ <div class="discussion">
1875
+
1876
+
1877
+ </div>
1878
+ </div>
1879
+ <div class="tags">
1880
+
1881
+ <p class="tag_title">Returns:</p>
1882
+ <ul class="return">
1883
+
1884
+ <li>
1885
+
1886
+
1887
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
1888
+
1889
+
1890
+
1891
+ </li>
1892
+
1893
+ </ul>
1894
+
1895
+ </div><table class="source_code">
1896
+ <tr>
1897
+ <td>
1898
+ <pre class="lines">
1899
+
1900
+
1901
+ 131
1902
+ 132
1903
+ 133
1904
+ 134
1905
+ 135
1906
+ 136
1907
+ 137
1908
+ 138
1909
+ 139
1910
+ 140
1911
+ 141
1912
+ 142
1913
+ 143
1914
+ 144
1915
+ 145
1916
+ 146
1917
+ 147
1918
+ 148
1919
+ 149
1920
+ 150
1921
+ 151
1922
+ 152
1923
+ 153
1924
+ 154
1925
+ 155
1926
+ 156</pre>
1927
+ </td>
1928
+ <td>
1929
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 131</span>
1930
+
1931
+ <span class='kw'>def</span> <span class='id identifier rubyid_select'>select</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_values'>values</span><span class='rparen'>)</span>
1932
+ <span class='kw'>if</span> <span class='id identifier rubyid_nonstring'>nonstring</span> <span class='op'>=</span> <span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='op'>!</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
1933
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Values must be strings. Found value \&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nonstring'>nonstring</span><span class='embexpr_end'>}</span><span class='tstring_content'>\&quot; of type \&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nonstring'>nonstring</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>\&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
1934
+ <span class='kw'>end</span>
1935
+
1936
+ <span class='id identifier rubyid_fn'>fn</span> <span class='op'>=</span> <span class='heredoc_beg'>&lt;&lt;~JAVASCRIPT</span>
1937
+ <span class='tstring_content'> (element, values) =&gt; {
1938
+ </span><span class='tstring_content'> if (element.nodeName.toLowerCase() !== &#39;select&#39;) {
1939
+ </span><span class='tstring_content'> throw new Error(&#39;Element is not a &lt;select&gt; element.&#39;);
1940
+ </span><span class='tstring_content'> }
1941
+ </span><span class='tstring_content'>
1942
+ </span><span class='tstring_content'> const options = Array.from(element.options);
1943
+ </span><span class='tstring_content'> element.value = undefined;
1944
+ </span><span class='tstring_content'> for (const option of options) {
1945
+ </span><span class='tstring_content'> option.selected = values.includes(option.value);
1946
+ </span><span class='tstring_content'> if (option.selected &amp;&amp; !element.multiple) {
1947
+ </span><span class='tstring_content'> break;
1948
+ </span><span class='tstring_content'> }
1949
+ </span><span class='tstring_content'> }
1950
+ </span><span class='tstring_content'> element.dispatchEvent(new Event(&#39;input&#39;, { bubbles: true }));
1951
+ </span><span class='tstring_content'> element.dispatchEvent(new Event(&#39;change&#39;, { bubbles: true }));
1952
+ </span><span class='tstring_content'> return options.filter(option =&gt; option.selected).map(option =&gt; option.value);
1953
+ </span><span class='tstring_content'> }
1954
+ </span><span class='heredoc_end'> JAVASCRIPT
1955
+ </span> <span class='id identifier rubyid_evaluate'>evaluate</span><span class='lparen'>(</span><span class='id identifier rubyid_fn'>fn</span><span class='comma'>,</span> <span class='id identifier rubyid_values'>values</span><span class='rparen'>)</span>
1956
+ <span class='kw'>end</span></pre>
1957
+ </td>
1958
+ </tr>
1959
+ </table>
1960
+ </div>
1961
+
1962
+ <div class="method_details ">
1963
+ <h3 class="signature " id="Seval-instance_method">
1964
+
1965
+ #<strong>Seval</strong>(selector, page_function, *args) &#x21d2; <tt>Object</tt>
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+ </h3><div class="docstring">
1972
+ <div class="discussion">
1973
+
1974
+ <p>`$eval()` in JavaScript. $ is not allowed to use as a method name in Ruby.</p>
1975
+
1976
+
1977
+ </div>
1978
+ </div>
1979
+ <div class="tags">
1980
+ <p class="tag_title">Parameters:</p>
1981
+ <ul class="param">
1982
+
1983
+ <li>
1984
+
1985
+ <span class='name'>selector</span>
1986
+
1987
+
1988
+ <span class='type'>(<tt>String</tt>)</span>
1989
+
1990
+
1991
+
1992
+ </li>
1993
+
1994
+ <li>
1995
+
1996
+ <span class='name'>page_function</span>
1997
+
1998
+
1999
+ <span class='type'>(<tt>String</tt>)</span>
2000
+
2001
+
2002
+
2003
+ </li>
2004
+
2005
+ </ul>
2006
+
2007
+ <p class="tag_title">Returns:</p>
2008
+ <ul class="return">
2009
+
2010
+ <li>
2011
+
2012
+
2013
+ <span class='type'>(<tt>Object</tt>)</span>
2014
+
2015
+
2016
+
2017
+ </li>
2018
+
2019
+ </ul>
2020
+
2021
+ </div><table class="source_code">
2022
+ <tr>
2023
+ <td>
2024
+ <pre class="lines">
2025
+
2026
+
2027
+ 348
2028
+ 349
2029
+ 350
2030
+ 351
2031
+ 352
2032
+ 353
2033
+ 354
2034
+ 355
2035
+ 356
2036
+ 357</pre>
2037
+ </td>
2038
+ <td>
2039
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 348</span>
2040
+
2041
+ <span class='kw'>def</span> <span class='const'>Seval</span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='comma'>,</span> <span class='id identifier rubyid_page_function'>page_function</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
2042
+ <span class='id identifier rubyid_element_handle'>element_handle</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#S-instance_method" title="Puppeteer::ElementHandle#S (method)">S</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='rparen'>)</span>
2043
+ <span class='kw'>unless</span> <span class='id identifier rubyid_element_handle'>element_handle</span>
2044
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ElementHandle/ElementNotFoundError.html" title="Puppeteer::ElementHandle::ElementNotFoundError (class)">ElementNotFoundError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ElementHandle/ElementNotFoundError.html#initialize-instance_method" title="Puppeteer::ElementHandle::ElementNotFoundError#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='rparen'>)</span>
2045
+ <span class='kw'>end</span>
2046
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_element_handle'>element_handle</span><span class='period'>.</span><span class='id identifier rubyid_evaluate'>evaluate</span><span class='lparen'>(</span><span class='id identifier rubyid_page_function'>page_function</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
2047
+ <span class='id identifier rubyid_element_handle'>element_handle</span><span class='period'>.</span><span class='id identifier rubyid_dispose'>dispose</span>
2048
+
2049
+ <span class='id identifier rubyid_result'>result</span>
2050
+ <span class='kw'>end</span></pre>
2051
+ </td>
2052
+ </tr>
2053
+ </table>
2054
+ </div>
2055
+
2056
+ <div class="method_details ">
2057
+ <h3 class="signature " id="SS-instance_method">
2058
+
2059
+ #<strong>SS</strong>(selector) &#x21d2; <tt>Object</tt>
2060
+
2061
+
2062
+
2063
+
2064
+
2065
+ </h3><div class="docstring">
2066
+ <div class="discussion">
2067
+
2068
+ <p>`$$()` in JavaScript. $ is not allowed to use as a method name in Ruby.</p>
2069
+
2070
+
2071
+ </div>
2072
+ </div>
2073
+ <div class="tags">
2074
+ <p class="tag_title">Parameters:</p>
2075
+ <ul class="param">
2076
+
2077
+ <li>
2078
+
2079
+ <span class='name'>selector</span>
2080
+
2081
+
2082
+ <span class='type'>(<tt>String</tt>)</span>
2083
+
2084
+
2085
+
2086
+ </li>
2087
+
2088
+ </ul>
2089
+
2090
+
2091
+ </div><table class="source_code">
2092
+ <tr>
2093
+ <td>
2094
+ <pre class="lines">
2095
+
2096
+
2097
+ 328
2098
+ 329
2099
+ 330
2100
+ 331
2101
+ 332
2102
+ 333
2103
+ 334
2104
+ 335
2105
+ 336</pre>
2106
+ </td>
2107
+ <td>
2108
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 328</span>
2109
+
2110
+ <span class='kw'>def</span> <span class='const'>SS</span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='rparen'>)</span>
2111
+ <span class='id identifier rubyid_handles'>handles</span> <span class='op'>=</span> <span class='id identifier rubyid_evaluate_handle'>evaluate_handle</span><span class='lparen'>(</span>
2112
+ <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>(element, selector) =&gt; element.querySelectorAll(selector)</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
2113
+ <span class='id identifier rubyid_selector'>selector</span><span class='comma'>,</span>
2114
+ <span class='rparen'>)</span>
2115
+ <span class='id identifier rubyid_properties'>properties</span> <span class='op'>=</span> <span class='id identifier rubyid_handles'>handles</span><span class='period'>.</span><span class='id identifier rubyid_properties'>properties</span>
2116
+ <span class='id identifier rubyid_handles'>handles</span><span class='period'>.</span><span class='id identifier rubyid_dispose'>dispose</span>
2117
+ <span class='id identifier rubyid_properties'>properties</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:as_element</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span>
2118
+ <span class='kw'>end</span></pre>
2119
+ </td>
2120
+ </tr>
2121
+ </table>
2122
+ </div>
2123
+
2124
+ <div class="method_details ">
2125
+ <h3 class="signature " id="SSeval-instance_method">
2126
+
2127
+ #<strong>SSeval</strong>(selector, page_function, *args) &#x21d2; <tt>Object</tt>
2128
+
2129
+
2130
+
2131
+
2132
+
2133
+ </h3><div class="docstring">
2134
+ <div class="discussion">
2135
+
2136
+ <p>`$$eval()` in JavaScript. $ is not allowed to use as a method name in Ruby.</p>
2137
+
2138
+
2139
+ </div>
2140
+ </div>
2141
+ <div class="tags">
2142
+ <p class="tag_title">Parameters:</p>
2143
+ <ul class="param">
2144
+
2145
+ <li>
2146
+
2147
+ <span class='name'>selector</span>
2148
+
2149
+
2150
+ <span class='type'>(<tt>String</tt>)</span>
2151
+
2152
+
2153
+
2154
+ </li>
2155
+
2156
+ <li>
2157
+
2158
+ <span class='name'>page_function</span>
2159
+
2160
+
2161
+ <span class='type'>(<tt>String</tt>)</span>
2162
+
2163
+
2164
+
2165
+ </li>
2166
+
2167
+ </ul>
2168
+
2169
+ <p class="tag_title">Returns:</p>
2170
+ <ul class="return">
2171
+
2172
+ <li>
2173
+
2174
+
2175
+ <span class='type'>(<tt>Object</tt>)</span>
2176
+
2177
+
2178
+
2179
+ </li>
2180
+
2181
+ </ul>
2182
+
2183
+ </div><table class="source_code">
2184
+ <tr>
2185
+ <td>
2186
+ <pre class="lines">
2187
+
2188
+
2189
+ 371
2190
+ 372
2191
+ 373
2192
+ 374
2193
+ 375
2194
+ 376
2195
+ 377
2196
+ 378
2197
+ 379
2198
+ 380</pre>
2199
+ </td>
2200
+ <td>
2201
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 371</span>
2202
+
2203
+ <span class='kw'>def</span> <span class='const'>SSeval</span><span class='lparen'>(</span><span class='id identifier rubyid_selector'>selector</span><span class='comma'>,</span> <span class='id identifier rubyid_page_function'>page_function</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
2204
+ <span class='id identifier rubyid_handles'>handles</span> <span class='op'>=</span> <span class='id identifier rubyid_evaluate_handle'>evaluate_handle</span><span class='lparen'>(</span>
2205
+ <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>(element, selector) =&gt; Array.from(element.querySelectorAll(selector))</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
2206
+ <span class='id identifier rubyid_selector'>selector</span><span class='comma'>,</span>
2207
+ <span class='rparen'>)</span>
2208
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_handles'>handles</span><span class='period'>.</span><span class='id identifier rubyid_evaluate'>evaluate</span><span class='lparen'>(</span><span class='id identifier rubyid_page_function'>page_function</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
2209
+ <span class='id identifier rubyid_handles'>handles</span><span class='period'>.</span><span class='id identifier rubyid_dispose'>dispose</span>
2210
+
2211
+ <span class='id identifier rubyid_result'>result</span>
2212
+ <span class='kw'>end</span></pre>
2213
+ </td>
2214
+ </tr>
2215
+ </table>
2216
+ </div>
2217
+
2218
+ <div class="method_details ">
2219
+ <h3 class="signature " id="Sx-instance_method">
2220
+
2221
+ #<strong>Sx</strong>(expression) &#x21d2; <tt>Array&lt;<span class='object_link'><a href="" title="Puppeteer::ElementHandle (class)">ElementHandle</a></span>&gt;</tt>
2222
+
2223
+
2224
+
2225
+
2226
+
2227
+ </h3><div class="docstring">
2228
+ <div class="discussion">
2229
+
2230
+ <p>`$x()` in JavaScript. $ is not allowed to use as a method name in Ruby.</p>
2231
+
2232
+
2233
+ </div>
2234
+ </div>
2235
+ <div class="tags">
2236
+ <p class="tag_title">Parameters:</p>
2237
+ <ul class="param">
2238
+
2239
+ <li>
2240
+
2241
+ <span class='name'>expression</span>
2242
+
2243
+
2244
+ <span class='type'>(<tt>String</tt>)</span>
2245
+
2246
+
2247
+
2248
+ </li>
2249
+
2250
+ </ul>
2251
+
2252
+ <p class="tag_title">Returns:</p>
2253
+ <ul class="return">
2254
+
2255
+ <li>
2256
+
2257
+
2258
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="" title="Puppeteer::ElementHandle (class)">ElementHandle</a></span>&gt;</tt>)</span>
2259
+
2260
+
2261
+
2262
+ </li>
2263
+
2264
+ </ul>
2265
+
2266
+ </div><table class="source_code">
2267
+ <tr>
2268
+ <td>
2269
+ <pre class="lines">
2270
+
2271
+
2272
+ 393
2273
+ 394
2274
+ 395
2275
+ 396
2276
+ 397
2277
+ 398
2278
+ 399
2279
+ 400
2280
+ 401
2281
+ 402
2282
+ 403
2283
+ 404
2284
+ 405
2285
+ 406
2286
+ 407
2287
+ 408
2288
+ 409</pre>
2289
+ </td>
2290
+ <td>
2291
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 393</span>
2292
+
2293
+ <span class='kw'>def</span> <span class='const'>Sx</span><span class='lparen'>(</span><span class='id identifier rubyid_expression'>expression</span><span class='rparen'>)</span>
2294
+ <span class='id identifier rubyid_fn'>fn</span> <span class='op'>=</span> <span class='heredoc_beg'>&lt;&lt;~JAVASCRIPT</span>
2295
+ <span class='tstring_content'> (element, expression) =&gt; {
2296
+ </span><span class='tstring_content'> const document = element.ownerDocument || element;
2297
+ </span><span class='tstring_content'> const iterator = document.evaluate(expression, element, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE);
2298
+ </span><span class='tstring_content'> const array = [];
2299
+ </span><span class='tstring_content'> let item;
2300
+ </span><span class='tstring_content'> while ((item = iterator.iterateNext()))
2301
+ </span><span class='tstring_content'> array.push(item);
2302
+ </span><span class='tstring_content'> return array;
2303
+ </span><span class='tstring_content'> }
2304
+ </span><span class='heredoc_end'> JAVASCRIPT
2305
+ </span> <span class='id identifier rubyid_handles'>handles</span> <span class='op'>=</span> <span class='id identifier rubyid_evaluate_handle'>evaluate_handle</span><span class='lparen'>(</span><span class='id identifier rubyid_fn'>fn</span><span class='comma'>,</span> <span class='id identifier rubyid_expression'>expression</span><span class='rparen'>)</span>
2306
+ <span class='id identifier rubyid_properties'>properties</span> <span class='op'>=</span> <span class='id identifier rubyid_handles'>handles</span><span class='period'>.</span><span class='id identifier rubyid_properties'>properties</span>
2307
+ <span class='id identifier rubyid_handles'>handles</span><span class='period'>.</span><span class='id identifier rubyid_dispose'>dispose</span>
2308
+ <span class='id identifier rubyid_properties'>properties</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:as_element</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span>
2309
+ <span class='kw'>end</span></pre>
2310
+ </td>
2311
+ </tr>
2312
+ </table>
2313
+ </div>
2314
+
2315
+ <div class="method_details ">
2316
+ <h3 class="signature " id="tap-instance_method">
2317
+
2318
+ #<strong>tap</strong>(&amp;block) &#x21d2; <tt>Object</tt>
2319
+
2320
+
2321
+
2322
+
2323
+
2324
+ </h3><table class="source_code">
2325
+ <tr>
2326
+ <td>
2327
+ <pre class="lines">
2328
+
2329
+
2330
+ 190
2331
+ 191
2332
+ 192
2333
+ 193
2334
+ 194
2335
+ 195
2336
+ 196</pre>
2337
+ </td>
2338
+ <td>
2339
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 190</span>
2340
+
2341
+ <span class='kw'>def</span> <span class='id identifier rubyid_tap'>tap</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2342
+ <span class='kw'>return</span> <span class='kw'>super</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_block'>block</span>
2343
+
2344
+ <span class='id identifier rubyid_scroll_into_view_if_needed'>scroll_into_view_if_needed</span>
2345
+ <span class='id identifier rubyid_point'>point</span> <span class='op'>=</span> <span class='id identifier rubyid_clickable_point'>clickable_point</span>
2346
+ <span class='ivar'>@page</span><span class='period'>.</span><span class='id identifier rubyid_touchscreen'>touchscreen</span><span class='period'>.</span><span class='id identifier rubyid_tap'>tap</span><span class='lparen'>(</span><span class='id identifier rubyid_point'>point</span><span class='period'>.</span><span class='id identifier rubyid_x'>x</span><span class='comma'>,</span> <span class='id identifier rubyid_point'>point</span><span class='period'>.</span><span class='id identifier rubyid_y'>y</span><span class='rparen'>)</span>
2347
+ <span class='kw'>end</span></pre>
2348
+ </td>
2349
+ </tr>
2350
+ </table>
2351
+ </div>
2352
+
2353
+ <div class="method_details ">
2354
+ <h3 class="signature " id="type_text-instance_method">
2355
+
2356
+ #<strong>type_text</strong>(text, delay: nil) &#x21d2; <tt>Object</tt>
2357
+
2358
+
2359
+
2360
+
2361
+
2362
+ </h3><div class="docstring">
2363
+ <div class="discussion">
2364
+
2365
+
2366
+ </div>
2367
+ </div>
2368
+ <div class="tags">
2369
+ <p class="tag_title">Parameters:</p>
2370
+ <ul class="param">
2371
+
2372
+ <li>
2373
+
2374
+ <span class='name'>text</span>
2375
+
2376
+
2377
+ <span class='type'>(<tt>String</tt>)</span>
2378
+
2379
+
2380
+
2381
+ </li>
2382
+
2383
+ <li>
2384
+
2385
+ <span class='name'>delay</span>
2386
+
2387
+
2388
+ <span class='type'>(<tt>number|nil</tt>)</span>
2389
+
2390
+
2391
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
2392
+
2393
+
2394
+ </li>
2395
+
2396
+ </ul>
2397
+
2398
+
2399
+ </div><table class="source_code">
2400
+ <tr>
2401
+ <td>
2402
+ <pre class="lines">
2403
+
2404
+
2405
+ 212
2406
+ 213
2407
+ 214
2408
+ 215</pre>
2409
+ </td>
2410
+ <td>
2411
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 212</span>
2412
+
2413
+ <span class='kw'>def</span> <span class='id identifier rubyid_type_text'>type_text</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
2414
+ <span class='id identifier rubyid_focus'>focus</span>
2415
+ <span class='ivar'>@page</span><span class='period'>.</span><span class='id identifier rubyid_keyboard'>keyboard</span><span class='period'>.</span><span class='id identifier rubyid_type_text'>type_text</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='label'>delay:</span> <span class='id identifier rubyid_delay'>delay</span><span class='rparen'>)</span>
2416
+ <span class='kw'>end</span></pre>
2417
+ </td>
2418
+ </tr>
2419
+ </table>
2420
+ </div>
2421
+
2422
+ <div class="method_details ">
2423
+ <h3 class="signature " id="upload_file-instance_method">
2424
+
2425
+ #<strong>upload_file</strong>(*file_paths) &#x21d2; <tt>Object</tt>
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+ </h3><div class="docstring">
2432
+ <div class="discussion">
2433
+
2434
+
2435
+ </div>
2436
+ </div>
2437
+ <div class="tags">
2438
+ <p class="tag_title">Parameters:</p>
2439
+ <ul class="param">
2440
+
2441
+ <li>
2442
+
2443
+ <span class='name'>file_paths</span>
2444
+
2445
+
2446
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
2447
+
2448
+
2449
+
2450
+ </li>
2451
+
2452
+ </ul>
2453
+
2454
+
2455
+ </div><table class="source_code">
2456
+ <tr>
2457
+ <td>
2458
+ <pre class="lines">
2459
+
2460
+
2461
+ 159
2462
+ 160
2463
+ 161
2464
+ 162
2465
+ 163
2466
+ 164
2467
+ 165
2468
+ 166
2469
+ 167
2470
+ 168
2471
+ 169
2472
+ 170
2473
+ 171
2474
+ 172
2475
+ 173
2476
+ 174
2477
+ 175
2478
+ 176
2479
+ 177
2480
+ 178
2481
+ 179
2482
+ 180
2483
+ 181
2484
+ 182
2485
+ 183
2486
+ 184
2487
+ 185
2488
+ 186
2489
+ 187
2490
+ 188</pre>
2491
+ </td>
2492
+ <td>
2493
+ <pre class="code"><span class="info file"># File 'lib/puppeteer/element_handle.rb', line 159</span>
2494
+
2495
+ <span class='kw'>def</span> <span class='id identifier rubyid_upload_file'>upload_file</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_file_paths'>file_paths</span><span class='rparen'>)</span>
2496
+ <span class='id identifier rubyid_is_multiple'>is_multiple</span> <span class='op'>=</span> <span class='id identifier rubyid_evaluate'>evaluate</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>el =&gt; el.multiple</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
2497
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_is_multiple'>is_multiple</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_file_paths'>file_paths</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&gt;=</span> <span class='int'>2</span>
2498
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Multiple file uploads only work with &lt;input type=file multiple&gt;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
2499
+ <span class='kw'>end</span>
2500
+
2501
+ <span class='kw'>if</span> <span class='id identifier rubyid_error_path'>error_path</span> <span class='op'>=</span> <span class='id identifier rubyid_file_paths'>file_paths</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_file_path'>file_path</span><span class='op'>|</span> <span class='op'>!</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
2502
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgmentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_error_path'>error_path</span><span class='embexpr_end'>}</span><span class='tstring_content'> does not exist or is not readable</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
2503
+ <span class='kw'>end</span>
2504
+
2505
+ <span class='id identifier rubyid_backend_node_id'>backend_node_id</span> <span class='op'>=</span> <span class='ivar'>@remote_object</span><span class='period'>.</span><span class='id identifier rubyid_node_info'>node_info</span><span class='lparen'>(</span><span class='ivar'>@client</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>node</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>backendNodeId</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
2506
+
2507
+ <span class='comment'># The zero-length array is a special case, it seems that DOM.setFileInputFiles does
2508
+ </span> <span class='comment'># not actually update the files in that case, so the solution is to eval the element
2509
+ </span> <span class='comment'># value to a new FileList directly.
2510
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_file_paths'>file_paths</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
2511
+ <span class='id identifier rubyid_fn'>fn</span> <span class='op'>=</span> <span class='heredoc_beg'>&lt;&lt;~JAVASCRIPT</span>
2512
+ <span class='tstring_content'> (element) =&gt; {
2513
+ </span><span class='tstring_content'> element.files = new DataTransfer().files;
2514
+ </span><span class='tstring_content'>
2515
+ </span><span class='tstring_content'> // Dispatch events for this case because it should behave akin to a user action.
2516
+ </span><span class='tstring_content'> element.dispatchEvent(new Event(&#39;input&#39;, { bubbles: true }));
2517
+ </span><span class='tstring_content'> element.dispatchEvent(new Event(&#39;change&#39;, { bubbles: true }));
2518
+ </span><span class='tstring_content'> }
2519
+ </span><span class='heredoc_end'> JAVASCRIPT
2520
+ </span> <span class='id identifier rubyid_await'><span class='object_link'><a href="ConcurrentRubyUtils.html#await-instance_method" title="Puppeteer::ConcurrentRubyUtils#await (method)">await</a></span></span> <span class='id identifier rubyid_this'>this</span><span class='period'>.</span><span class='id identifier rubyid_evaluate'>evaluate</span><span class='lparen'>(</span><span class='id identifier rubyid_fn'>fn</span><span class='rparen'>)</span>
2521
+ <span class='kw'>else</span>
2522
+ <span class='ivar'>@remote_object</span><span class='period'>.</span><span class='id identifier rubyid_set_file_input_files'>set_file_input_files</span><span class='lparen'>(</span><span class='ivar'>@client</span><span class='comma'>,</span> <span class='id identifier rubyid_file_paths'>file_paths</span><span class='comma'>,</span> <span class='id identifier rubyid_backend_node_id'>backend_node_id</span><span class='rparen'>)</span>
2523
+ <span class='kw'>end</span>
2524
+ <span class='kw'>end</span></pre>
2525
+ </td>
2526
+ </tr>
2527
+ </table>
2528
+ </div>
2529
+
2530
+ </div>
2531
+
2532
+ </div>
2533
+
2534
+ <div id="footer">
2535
+ Generated on Fri Jun 12 12:38:35 2020 by
2536
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2537
+ 0.9.24 (ruby-2.6.3).
2538
+ </div>
2539
+
2540
+ </div>
2541
+ </body>
2542
+ </html>