-
Notifications
You must be signed in to change notification settings - Fork 6.2k
/
puppeteer.js
477 lines (410 loc) Β· 38 KB
/
puppeteer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
/* *******************************************************************************************
* PUPPETEER
* https://pptr.dev/
* ******************************************************************************************* */
// When you install Puppeteer, it downloads a recent version of Chromium (~170MB Mac, ~282MB Linux, ~280MB Win)
// that is guaranteed to work with the API.
npm install puppeteer
// A lightweight version of Puppeteer for launching an existing browser installation or for connecting to a remote one.
// Be sure that the version of puppeteer-core you install is compatible with the browser you intend to connect to.
// More about the difference between puppeteer vs puppeteer-core
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-puppeteer-vs-puppeteer-core
npm install puppeteer-core
/* *******************************************************************************************
* ENVIRONMENT VARIABLES
* ******************************************************************************************* */
HTTP_PROXY // Defines HTTP proxy settings that are used to download and run Chromium.
HTTPS_PROXY // Defines HTTP proxy settings that are used to download and run Chromium.
NO_PROXY // Defines HTTP proxy settings that are used to download and run Chromium.
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD // Do not download bundled Chromium during installation step.
PUPPETEER_DOWNLOAD_HOST // Overwrite URL prefix that is used to download Chromium. Note: this includes protocol and might even include path prefix. Defaults to https://storage.googleapis.com.
PUPPETEER_CHROMIUM_REVISION // Specify a certain version of Chromium you'd like Puppeteer to use. See puppeteer.launch([options]) on how executable path is inferred. BEWARE: Puppeteer is only guaranteed to work with the bundled Chromium, use at your own risk.
PUPPETEER_EXECUTABLE_PATH // Specify an executable path to be used in puppeteer.launch. See puppeteer.launch([options]) on how the executable path is inferred. BEWARE: Puppeteer is only guaranteed to work with the bundled Chromium, use at your own risk.
PUPPETEER_PRODUCT // Specify which browser you'd like Puppeteer to use. Must be one of chrome or firefox. Setting product programmatically in puppeteer.launch([options]) supercedes this environment variable. The product is exposed in puppeteer.product
/* *******************************************************************************************
* API
* ******************************************************************************************* */
// PUPPETEER
// -----
// Puppeteer module provides a method to launch a Chromium instance.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-puppeteer
const puppeteer = require('puppeteer');
puppeteer.devices; // Returns a list of devices to be used with page.emulate(options)
puppeteer.errors; // Returns the specific error classes
puppeteer.product; // Returns the name of the browser that is under automation ("chrome" or "firefox")
puppeteer.connect(options); // Attaches Puppeteer to an existing Chromium instance.
puppeteer.createBrowserFetcher([options]); // Create a brower fetcher instance
puppeteer.defaultArgs([options]); // The default flags that Chromium will be launched with.
puppeteer.executablePath(); // Returns a path where Puppeteer expects to find bundled Chromium.
puppeteer.launch([options]); // Launch a browser instance
// BROWSER FETCHER
// -----
// BrowserFetcher can download and manage different versions of Chromium.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-browserfetcher
const browserFetcher = puppeteer.createBrowserFetcher();
browserFetcher.canDownload(revision) // Initiates a HEAD request to check if the revision is available.
browserFetcher.download(revision[, progressCallback]) // Initiates a GET request to download the revision from the host.
browserFetcher.localRevisions() // Returns a list of all revisions available locally on disk.
browserFetcher.platform() // Returns one of mac, linux, win32 or win64.
browserFetcher.remove(revision) // Resolves when the revision has been removed.
browserFetcher.revisionInfo(revision) // Returns all the information on the revision.
// BROWSER
// -----
// A Browser is created when Puppeteer connects to a Chromium instance, either through puppeteer.launch or puppeteer.connect.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-browser
const browser = await puppeteer.launch();
browser.on('disconnected') // Emitted when Puppeteer gets disconnected from the Chromium instance.
browser.on('targetchanged') // Emitted when the url of a target changes.
browser.on('targetcreated') // Emitted when a target is created, for example when a new page is opened by window.open or browser.newPage.
browser.on('targetdestroyed') // Emitted when a target is destroyed, for example when a page is closed.
browser.browserContexts() // Returns an array of all open browser contexts.
browser.close() // Closes Chromium and all of its pages (if any were opened).
browser.createIncognitoBrowserContext() // Creates a new incognito browser context.
browser.defaultBrowserContext() // Returns the default browser context.
browser.disconnect() // Disconnects Puppeteer from the browser, but leaves the Chromium process running.
browser.isConnected() // Indicates that the browser is connected.
browser.newPage() // Promise which resolves to a new Page object.
browser.pages() // An array of all pages inside the Browser.
browser.process() // Returns Spawned browser process.
browser.target() // A target associated with the browser.
browser.targets() // An array of all active targets inside the Browser.
browser.userAgent() // Promise which resolves to the browser's original user agent.
browser.version() // Returns the browser version (e.g. Chrome/61.0.3153.0)
browser.waitForTarget(predicate[, options]) // Promise which resolves to the first target found that matches the predicate function.
browser.wsEndpoint() // Returns the browser websocket url.
// BROWSER CONTEXT
// -----
// BrowserContexts provide a way to operate multiple independent browser sessions
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-browsercontext
const context = await browser.createIncognitoBrowserContext();
browserContext.on('targetchanged') // Emitted when the url of a target inside the browser context changes.
browserContext.on('targetcreated') // Emitted when a new target is created inside the browser context.
browserContext.on('targetdestroyed') // Emitted when a target inside the browser context is destroyed, for example when a page is closed.
browserContext.browser() // The browser this browser context belongs to.
browserContext.clearPermissionOverrides() // Clears all permission overrides for the browser context.
browserContext.close() // Closes the browser context. All the targets that belong to the browser context will be closed.
browserContext.isIncognito() // Returns whether BrowserContext is incognito.
browserContext.newPage() // Creates a new page in the browser context.
browserContext.overridePermissions(origin, permissions) // Overrides permissions to grant.
browserContext.pages() // An array of all pages inside the browser context.
browserContext.targets() // An array of all active targets inside the browser context.
browserContext.waitForTarget(predicate[, options]) // Promise which resolves to the first target found that matches the predicate function.
// PAGE
// -----
// Page provides methods to interact with a single tab or extension background page in Chromium.
// One Browser instance might have multiple Page instances.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-page
const page = await browser.newPage();
page.on('close') // Emitted when the page closes.
page.on('console') // Emitted when JavaScript within the page calls one of console API methods.
page.on('dialog') // Emitted when a JavaScript dialog appears, such as alert, prompt, confirm or beforeunload.
page.on('domcontentloaded') // Emitted when the JavaScript DOMContentLoaded event is dispatched.
page.on('error') // Emitted when the page crashes.
page.on('frameattached') // Emitted when a frame is attached.
page.on('framedetached') // Emitted when a frame is detached.
page.on('framenavigated') // Emitted when a frame is navigated to a new url.
page.on('load') // Emitted when the JavaScript load event is dispatched.
page.on('metrics') // Emitted when the JavaScript code makes a call to console.timeStamp.
page.on('pageerror') // Emitted when an uncaught exception happens within the page.
page.on('popup') // Emitted when the page opens a new tab or window.
page.on('request') // Emitted when a page issues a request.
page.on('requestfailed') // Emitted when a request fails, for example by timing out.
page.on('requestfinished') // Emitted when a request finishes successfully.
page.on('response') // Emitted when a response is received.
page.on('workercreated') // Emitted when a dedicated WebWorker is spawned by the page.
page.on('workerdestroyed') // Emitted when a dedicated WebWorker is terminated.
page.accessibility // returns Accessibility
page.coverage // returns Coverage
page.keyboard // returns Keyboard
page.mouse // returns Mouse
page.touchscreen // returns Touchscreen
page.tracing // returns Tracing
page.$(selector) // The method runs document.querySelector within the page. If no element matches the selector, the return value resolves to null.
page.$$(selector) // The method runs document.querySelectorAll within the page. If no elements match the selector, the return value resolves to [].
page.$eval(selector, pageFunction[, ...args]) // This method runs document.querySelector within the page and passes it as the first argument to pageFunction. If there's no element matching selector, the method throws an error.
page.$$eval(selector, pageFunction[, ...args]) // This method runs Array.from(document.querySelectorAll(selector)) within the page and passes it as the first argument to pageFunction.
page.$x(expression) // The method evaluates the XPath expression.
page.addScriptTag(options) // Adds a <script> tag into the page with the desired url or content.
page.addStyleTag(options) // Adds a <link rel="stylesheet"> tag into the page with the desired url or a <style type="text/css"> tag with the content.
page.authenticate(credentials) // Provide credentials for HTTP authentication.
page.bringToFront() // Brings page to front (activates tab).
page.browser() // Get the browser the page belongs to.
page.browserContext() // Get the browser context that the page belongs to.
page.click(selector[, options]) // This method fetches an element with selector, scrolls it into view if needed, and then uses page.mouse to click in the center of the element. If there's no element matching selector, the method throws an error.
page.close([options]) // Close the page
page.content() // Gets the full HTML contents of the page, including the doctype.
page.cookies([...urls]) // If no URLs are specified, this method returns cookies for the current page URL. If URLs are specified, only cookies for those URLs are returned.
page.deleteCookie(...cookies) // Delete a cookie
page.emulate(options) // Emulates given device metrics and user agent.
page.emulateMediaFeatures(features) // Emulates CSS media features on the page.
page.emulateMediaType(type) // Changes the CSS media type of the page.
page.emulateTimezone(timezoneId) // Changes the timezone of the page.
page.evaluate(pageFunction[, ...args]) // Evaluate the page.
page.evaluateHandle(pageFunction[, ...args]) // Evaluate the page and return returns in-page object (JSHandle).
page.evaluateOnNewDocument(pageFunction[, ...args]) // Adds a function which would be invoked whenever the page is navigated or whenever the child frame is attached or navigated.
page.exposeFunction(name, puppeteerFunction) // Adds a function called name on the page's window object.
page.focus(selector) // Fetches an element with selector and focuses it. If there's no element matching selector, the method throws an error.
page.frames() // Returns an array of all frames attached to the page.
page.goBack([options]) // Navigate to the previous page in history.
page.goForward([options]) // Navigate to the next page in history.
page.goto(url[, options]) // Promise which resolves to the main resource response. In case of multiple redirects, the navigation will resolve with the response of the last redirect.
page.hover(selector) // Fetches an element with selector, scrolls it into view if needed, and then uses page.mouse to hover over the center of the element.
page.isClosed() // Indicates that the page has been closed.
page.mainFrame() // Returns the page's main frame.
page.metrics() // Returns an object containing the page metrics.
page.pdf([options]) // Generates a pdf of the page with print css media.
page.queryObjects(prototypeHandle) // Iterates the JavaScript heap and finds all the objects with the given prototype.
page.reload([options]) // Reloads the page.
page.screenshot([options]) // Takes a screenshot.
page.select(selector, ...values) // Triggers a change and input event once all the provided options have been selected. If there's no <select> element matching selector, the method throws an error.
page.setBypassCSP(enabled) // Toggles bypassing page's Content-Security-Policy.
page.setCacheEnabled([enabled]) // Toggles ignoring cache for each request based on the enabled state. By default, caching is enabled.
page.setContent(html[, options]) // Asssigns HTML markup to the page.
page.setCookie(...cookies) // Sets a cookie.
page.setDefaultNavigationTimeout(timeout) // Changes the default maximum navigation timeout (see docs for the concerned methods).
page.setDefaultTimeout(timeout) // Changes the default maximum navigation timeout (for all methods).
page.setExtraHTTPHeaders(headers) // Sets extra HTTP headers to be sent with every request the page initiates.
page.setGeolocation(options) // Sets the page's geolocation.
page.setJavaScriptEnabled(enabled) // Whether or not to enable JavaScript on the page.
page.setOfflineMode(enabled) // When true, enables offline mode for the page.
page.setRequestInterception(value) // Whether to enable request interception.
page.setUserAgent(userAgent) // Sets the specific user agent to use in this page.
page.setViewport(viewport) // Sets the viewport.
page.tap(selector) // This method fetches an element with selector, scrolls it into view if needed, and then uses page.touchscreen to tap in the center of the element. If there's no element matching selector, the method throws an error.
page.target() // Returns a target this page was created from.
page.title() // Returns the page title.
page.type(selector, text[, options]) // Sends a keydown, keypress/input, and keyup event for each character in the text.
page.url() // This is a shortcut for page.mainFrame().url()
page.viewport() // Returns the viewport information.
page.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]]) // Wait for the element to appear.
page.waitForFileChooser([options]) // Wait for the file chooser.
page.waitForFunction(pageFunction[, options[, ...args]]) // Wait for the function.
page.waitForNavigation([options]) // Wait for navigation.
page.waitForRequest(urlOrPredicate[, options]) // Wait for the request.
page.waitForResponse(urlOrPredicate[, options]) // Wait for the response.
page.waitForSelector(selector[, options]) // Wait for the selector.
page.waitForXPath(xpath[, options]) // Wait for the XPath selector.
page.workers() // Returns all of the dedicated WebWorkers associated with the page.
// WORKER
// -----
// The Worker class represents a WebWorker.
// The events workercreated and workerdestroyed are emitted on the page object to signal the worker lifecycle.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-worker
worker.evaluate(pageFunction[, ...args]) // Evaluate a function in the worker context.
worker.evaluateHandle(pageFunction[, ...args]) // Evaluate a function in the worker context and returns in-page object (JSHandle).
worker.executionContext() // Returns ExecutionContext.
worker.url() // Returns worker url.
// ACCESSIBILITY
// -----
// The Accessibility class provides methods for inspecting Chromium's accessibility tree.
// The accessibility tree is used by assistive technology such as screen readers or switches.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-accessibility
accessibility.snapshot([options]) // Captures the current state of the accessibility tree. The returned object represents the root accessible node of the page.
// KEYBOARD
// -----
// Keyboard provides an api for managing a virtual keyboard.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-keyboard
keyboard.down(key[, options]) // Dispatches a keydown event.
keyboard.press(key[, options]) // Shortcut for keyboard.down and keyboard.up.
keyboard.sendCharacter(char) // Dispatches a keypress and input event. This does not send a keydown or keyup event.
keyboard.type(text[, options]) // Sends a keydown, keypress/input, and keyup event for each character in the text.
keyboard.up(key) // Dispatches a keyup event.
// MOUSE
// -----
// The Mouse class operates in main-frame CSS pixels relative to the top-left corner of the viewport.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-mouse
mouse.click(x, y[, options]) // Shortcut for mouse.move, mouse.down and mouse.up.
mouse.down([options]) // Dispatches a mousedown event.
mouse.move(x, y[, options]) // Dispatches a mousemove event.
mouse.up([options]) // Dispatches a mouseup event.
// TOUCHSCREEN
// -----
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-touchscreen
touchscreen.tap(x, y) // Dispatches a touchstart and touchend event.
// TRACING
// -----
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-tracing
tracing.start([options]) // Start trace.
tracing.stop() // Stop trace.
// FILE CHOOSER
// -----
// FileChooser objects are returned via the 'page.waitForFileChooser' method.
// File choosers let you react to the page requesting for a file.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-filechooser
fileChooser.accept(filePaths) // Accept the file chooser request with given paths.
fileChooser.cancel() // Closes the file chooser without selecting any files.
fileChooser.isMultiple() // Returns whether file chooser allow for multiple file selection.
// DIALOG
// -----
// Dialog objects are dispatched by page via the 'dialog' event.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-dialog
dialog.accept([promptText]) // Resolves when the dialog has been accepted.
dialog.defaultValue() // If dialog is prompt, returns default prompt value. Otherwise, returns empty string.
dialog.dismiss() // Resolves when the dialog has been dismissed.
dialog.message() // Returns a message displayed in the dialog.
dialog.type() // Returns dialog's type, can be one of: alert, beforeunload, confirm or prompt.
// CONSOLE MESSAGE
// -----
// ConsoleMessage objects are dispatched by page via the 'console' event.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-consolemessage
consoleMessage.args() // Returns JSHandle.
consoleMessage.location() // Returns location.
consoleMessage.text() // Returns message text.
consoleMessage.type() // Returns message type.
// FRAME
// -----
// At every point of time, page exposes its current frame tree via the page.mainFrame() and frame.childFrames() methods.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-frame
frame.$(selector) // The method queries frame for the selector. If there's no such element within the frame, the method will resolve to null.
frame.$$(selector) // The method runs document.querySelectorAll within the frame. If no elements match the selector, the return value resolves to [].
frame.$$eval(selector, pageFunction[, ...args]) // This method runs Array.from(document.querySelectorAll(selector)) within the frame and passes it as the first argument to pageFunction.
frame.$eval(selector, pageFunction[, ...args]) // This method runs document.querySelector within the frame and passes it as the first argument to pageFunction. If there's no element matching selector, the method throws an error.
frame.$x(expression) // The method evaluates the XPath expression.
frame.addScriptTag(options) // Adds a <script> tag into the page with the desired url or content.
frame.addStyleTag(options) // Adds a <link rel="stylesheet"> tag into the page with the desired url or a <style type="text/css"> tag with the content.
frame.childFrames() // Returns all child frames.
frame.click(selector[, options]) // This method fetches an element with selector, scrolls it into view if needed, and then uses page.mouse to click in the center of the element. If there's no element matching selector, the method throws an error.
frame.content() // Gets the full HTML contents of the frame, including the doctype.
frame.evaluate(pageFunction[, ...args]) // Evaluates function in the context of the frame.
frame.evaluateHandle(pageFunction[, ...args]) // Evaluates function in the context of the frame and returns JSHandle.
frame.executionContext() // Returns promise that resolves to the frame's default execution context.
frame.focus(selector) // This method fetches an element with selector and focuses it. If there's no element matching selector, the method throws an error.
frame.goto(url[, options]) // Goes to url.
frame.hover(selector) // This method fetches an element with selector, scrolls it into view if needed, and then uses page.mouse to hover over the center of the element. If there's no element matching selector, the method throws an error.
frame.isDetached() // Returns true if the frame has been detached, or false otherwise.
frame.name() // Returns frame's name attribute as specified in the tag.
frame.parentFrame() // Returns parent frame if any.
frame.select(selector, ...values) // Triggers a change and input event once all the provided options have been selected. If there's no <select> element matching selector, the method throws an error.
frame.setContent(html[, options]) // Set content in iframe.
frame.tap(selector) // This method fetches an element with selector, scrolls it into view if needed, and then uses page.touchscreen to tap in the center of the element. If there's no element matching selector, the method throws an error.
frame.title() // Returns the page's title.
frame.type(selector, text[, options]) // Sends a keydown, keypress/input, and keyup event for each character in the text.
frame.url() // Returns frame's url.
frame.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]]) // Wait for something.
frame.waitForFunction(pageFunction[, options[, ...args]]) // Wait for function.
frame.waitForNavigation([options]) // Wait for navigation.
frame.waitForSelector(selector[, options]) // Wait for selector.
frame.waitForXPath(xpath[, options]) // Wait for XPath selector.
// EXECUTION CONTEXT
// -----
// The class represents a context for JavaScript execution.
// Besides pages, execution contexts can be found in workers.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-executioncontext
executionContext.evaluate(pageFunction[, ...args]) // Evaluate function in execution context.
executionContext.evaluateHandle(pageFunction[, ...args]) // Evaluate function in execution context and returns JSHandle.
executionContext.frame() // Returns frame associated with this execution context.
executionContext.queryObjects(prototypeHandle) // The method iterates the JavaScript heap and finds all the objects with the given prototype.
// JSHANDLE
// -----
// JSHandle represents an in-page JavaScript object.
// JSHandles can be created with the page.evaluateHandle method.
// const windowHandle = await page.evaluateHandle(() => window);
jsHandle.asElement() // Returns either null or the object handle itself, if the object handle is an instance of ElementHandle.
jsHandle.dispose() // Resolves when the object handle is successfully disposed.
jsHandle.evaluate(pageFunction[, ...args]) // Evaluate function in the execution context the handle belongs to.
jsHandle.evaluateHandle(pageFunction[, ...args]) // Evaluate function in the execution context the handle belongs to and returns JS handle.
jsHandle.executionContext() // Returns execution context the handle belongs to.
jsHandle.getProperties() // Returns a map with property names as keys and JSHandle instances for the property values.
jsHandle.getProperty(propertyName) // Fetches a single property from the referenced object.
jsHandle.jsonValue() // Returns a JSON representation of the object. If the object has a toJSON function, it will not be called.
// ELEMENTHANDLE
// -----
// ElementHandle represents an in-page DOM element.
// ElementHandles can be created with the page.$ method.
// const hrefElement = await page.$('a');
elementHandle.$(selector) // The method runs element.querySelector within the page. If no element matches the selector, the return value resolves to null.
elementHandle.$$(selector) // The method runs element.querySelectorAll within the page. If no elements match the selector, the return value resolves to [].
elementHandle.$$eval(selector, pageFunction[, ...args]) // This method runs document.querySelectorAll within the element and passes it as the first argument to pageFunction. If there's no element matching selector, the method throws an error.
elementHandle.$eval(selector, pageFunction[, ...args]) // This method runs document.querySelector within the element and passes it as the first argument to pageFunction. If there's no element matching selector, the method throws an error.
elementHandle.$x(expression) // The method evaluates the XPath expression relative to the elementHandle. If there are no such elements, the method will resolve to an empty array.
elementHandle.asElement() // Returns ElementHandle.
elementHandle.boundingBox() // Returns the bounding box of the element (relative to the main frame), or null if the element is not visible.
elementHandle.boxModel() // Returns boxes of the element, or null if the element is not visible.
elementHandle.click([options]) // This method scrolls element into view if needed, and then uses page.mouse to click in the center of the element. If the element is detached from DOM, the method throws an error.
elementHandle.contentFrame() // Resolves to the content frame for element handles referencing iframe nodes, or null otherwise
elementHandle.dispose() // Stops referencing the element handle.
elementHandle.evaluate(pageFunction[, ...args]) // Evaluates function in the execution content the element handle belongs to.
elementHandle.evaluateHandle(pageFunction[, ...args]) // Evaluates function in the execution content the element handle belongs to and returns JS handle.
elementHandle.executionContext() // Returns execution context.
elementHandle.focus() // Calls focus on the element.
elementHandle.getProperties() // The method returns a map with property names as keys and JSHandle instances for the property values.
elementHandle.getProperty(propertyName) // Fetches a single property from the objectHandle.s
elementHandle.hover() // This method scrolls element into view if needed, and then uses page.mouse to hover over the center of the element. If the element is detached from DOM, the method throws an error.
elementHandle.isIntersectingViewport() // Resolves to true if the element is visible in the current viewport.
elementHandle.jsonValue() // Returns a JSON representation of the object.
elementHandle.press(key[, options]) // Focuses the element, and then uses keyboard.down and keyboard.up.
elementHandle.screenshot([options]) // This method scrolls element into view if needed, and then uses page.screenshot to take a screenshot of the element.
elementHandle.select(...values) // Triggers a change and input event once all the provided options have been selected. If there's no <select> element matching selector, the method throws an error.
elementHandle.tap() // This method scrolls element into view if needed, and then uses touchscreen.tap to tap in the center of the element. If the element is detached from DOM, the method throws an error.
elementHandle.toString() // Returns string.
elementHandle.type(text[, options]) // Focuses the element, and then sends a keydown, keypress/input, and keyup event for each character in the text.
elementHandle.uploadFile(...filePaths) // Uploads file.
// REQUEST
// -----
// Represents a request which are sent by a page.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-request
request.abort([errorCode]) // Aborts request.
request.continue([overrides]) // Continues request with optional request overrides.
request.failure() // The method returns null unless this request was failed, as reported by requestfailed event.
request.frame() // Returns the Frame that initiated this request, or null if navigating to error pages.
request.headers() // Returns an object with HTTP headers associated with the request. All header names are lower-case.
request.isNavigationRequest() // Whether this request is driving frame's navigation.
request.method() // Returns Request's method (GET, POST, etc.)
request.postData() // Returns Request's post body, if any.
request.redirectChain() // Returns the redirect chain.
request.resourceType() // Returns the request's resource type as it was perceived by the rendering engine.
request.respond(response) // Fulfills request with given response.
request.response() // Returns a matching Response object, or null if the response has not been received yet.
request.url() // Returns URL of the request.
// RESPONSE
// -----
// Response class represents responses which are received by page.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-response
response.buffer() // Resolves to a buffer with response body.
response.frame() // Returns the frame that initiated this response, or null if navigating to error pages.
response.fromCache() // True if the response was served from either the browser's disk cache or memory cache.
response.fromServiceWorker() // True if the response was served by a service worker.
response.headers() // Returns an object with HTTP headers associated with the response. All header names are lower-case.
response.json() // Resolves to a JSON representation of response body.
response.ok() // Contains a boolean stating whether the response was successful (status in the range 200-299) or not.
response.remoteAddress() // Returns remote address.
response.request() // Retuns the matching Request object.
response.securityDetails() // Returns the security details if the response was received over the secure connection, or null otherwise.
response.status() // Contains the status code of the response (e.g., 200 for a success).
response.statusText() // Contains the status text of the response (e.g. usually an "OK" for a success).
response.text() // Resolves to a text representation of response body.
response.url() // Contains the URL of the response.
// SECURITY DETAILS
// -----
// SecurityDetails class represents the security details when response was received over the secure connection.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-securitydetails
securityDetails.issuer() // Returns a string with the name of issuer of the certificate.
securityDetails.protocol() // Returns a string with the security protocol, eg. "TLS 1.2".
securityDetails.subjectName() // Returns the name of the subject to which the certificate was issued to.
securityDetails.validFrom() // Returns UnixTime stating the start of validity of the certificate.
securityDetails.validTo() // Returns UnixTime stating the end of validity of the certificate.
// TARGET
// -----
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-target
target.browser() // Get the browser the target belongs to.
target.browserContext() // Returns the browser context.
target.createCDPSession() // Creates a Chrome Devtools Protocol session attached to the target.
target.opener() // Get the target that opened this target. Top-level targets return null.
target.page() // Returns the page.
target.type() // Identifies what kind of target this is.
target.url() // Returns url.
target.worker() // Returns worker.
// CDPSESSION
// -----
// The CDPSession instances are used to talk raw Chrome Devtools Protocol
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-cdpsession
cdpSession.detach() // Detaches the cdpSession from the target. Once detached, the cdpSession object won't emit any events and can't be used to send messages.
cdpSession.send(method[, params]) // Send message.
// COVERAGE
// -----
// Coverage gathers information about parts of JavaScript and CSS that were used by the page.
// https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-class-coverage
coverage.startCSSCoverage([options]) // Start CSS coverage.
coverage.startJSCoverage([options]) // Start JS coverage.
coverage.stopCSSCoverage() // Stop CSS coverage.
coverage.stopJSCoverage() // Stop JS coverage.