mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 19:07:08 +00:00
Merge pull request #32723 from SimonSchick/feat/puppeteer-v1.12
feat(puppeteer): v1.12
This commit is contained in:
commit
c214d32234
83
types/puppeteer/index.d.ts
vendored
83
types/puppeteer/index.d.ts
vendored
@ -1,4 +1,4 @@
|
||||
// Type definitions for puppeteer 1.11
|
||||
// Type definitions for puppeteer 1.12
|
||||
// Project: https://github.com/GoogleChrome/puppeteer#readme
|
||||
// Definitions by: Marvin Hagemeister <https://github.com/marvinhagemeister>
|
||||
// Christopher Deutsch <https://github.com/cdeutsch>
|
||||
@ -346,10 +346,27 @@ export type ConsoleMessageType = "log"
|
||||
| "count"
|
||||
| "timeEnd";
|
||||
|
||||
export interface ConsoleMessageLocation {
|
||||
/**
|
||||
* URL of the resource if known.
|
||||
*/
|
||||
url?: string;
|
||||
/**
|
||||
* Line number in the resource if known
|
||||
*/
|
||||
lineNumber?: number;
|
||||
/**
|
||||
* Column number in the resource if known.
|
||||
*/
|
||||
columnNumber?: number;
|
||||
}
|
||||
|
||||
/** ConsoleMessage objects are dispatched by page via the 'console' event. */
|
||||
export interface ConsoleMessage {
|
||||
/** The message arguments. */
|
||||
args(): JSHandle[];
|
||||
/** The location the message originated from */
|
||||
location(): ConsoleMessageLocation;
|
||||
/** The message text. */
|
||||
text(): string;
|
||||
type(): ConsoleMessageType;
|
||||
@ -1087,18 +1104,22 @@ export interface Response {
|
||||
}
|
||||
|
||||
export interface WaitForSelectorOptions extends Timeoutable {
|
||||
/**
|
||||
* Wait for element to be present in DOM and to be visible,
|
||||
* i.e. to not have display: none or visibility: hidden CSS properties.
|
||||
* @default false
|
||||
*/
|
||||
visible?: boolean;
|
||||
/**
|
||||
* Wait for element to not be found in the DOM or to be hidden,
|
||||
* i.e. have display: none or visibility: hidden CSS properties.
|
||||
* @default false
|
||||
*/
|
||||
hidden?: boolean;
|
||||
/**
|
||||
* Wait for element to be present in DOM and to be visible,
|
||||
* i.e. to not have display: none or visibility: hidden CSS properties.
|
||||
* @default false
|
||||
*/
|
||||
visible?: boolean;
|
||||
/**
|
||||
* Wait for element to not be found in the DOM or to be hidden,
|
||||
* i.e. have display: none or visibility: hidden CSS properties.
|
||||
* @default false
|
||||
*/
|
||||
hidden?: boolean;
|
||||
}
|
||||
|
||||
export interface WaitForSelectorOptionsHidden extends WaitForSelectorOptions {
|
||||
hidden: true;
|
||||
}
|
||||
|
||||
export interface FrameBase extends Evalable {
|
||||
@ -1227,6 +1248,7 @@ export interface FrameBase extends Evalable {
|
||||
/**
|
||||
* Shortcut for waitForSelector and waitForXPath
|
||||
*/
|
||||
waitFor(selector: string, options: WaitForSelectorOptionsHidden): Promise<ElementHandle | null>;
|
||||
waitFor(selector: string, options?: WaitForSelectorOptions): Promise<ElementHandle>;
|
||||
|
||||
/**
|
||||
@ -1257,6 +1279,10 @@ export interface FrameBase extends Evalable {
|
||||
selector: string,
|
||||
options?: WaitForSelectorOptions,
|
||||
): Promise<ElementHandle>;
|
||||
waitForSelector(
|
||||
selector: string,
|
||||
options?: WaitForSelectorOptionsHidden,
|
||||
): Promise<ElementHandle | null>;
|
||||
|
||||
waitForXPath(
|
||||
xpath: string,
|
||||
@ -1311,6 +1337,8 @@ export interface PageEventObj {
|
||||
metrics: { title: string, metrics: Metrics };
|
||||
/** Emitted when an uncaught exception happens within the page. */
|
||||
pageerror: Error;
|
||||
/** Emitted when the page opens a new tab or window. */
|
||||
popup: Page;
|
||||
/**
|
||||
* Emitted when a page issues a request. The request object is read-only.
|
||||
* In order to intercept and mutate requests, see page.setRequestInterceptionEnabled.
|
||||
@ -1523,6 +1551,9 @@ export interface Page extends EventEmitter, FrameBase {
|
||||
/** Get the browser the page belongs to. */
|
||||
browser(): Browser;
|
||||
|
||||
/** Get the browser context that the page belongs to. */
|
||||
browserContext(): BrowserContext;
|
||||
|
||||
/** Closes the current page. */
|
||||
close(options?: PageCloseOptions): Promise<void>;
|
||||
|
||||
@ -1666,6 +1697,25 @@ export interface Page extends EventEmitter, FrameBase {
|
||||
*/
|
||||
setDefaultNavigationTimeout(timeout: number): void;
|
||||
|
||||
/**
|
||||
* This setting will change the default maximum time for the following methods and related shortcuts:
|
||||
* - `page.goBack`
|
||||
* - `page.goForward`
|
||||
* - `page.goto`
|
||||
* - `page.reload`
|
||||
* - `page.setContent`
|
||||
* - `page.waitFor`
|
||||
* - `page.waitForFunction`
|
||||
* - `page.waitForNavigation`
|
||||
* - `page.waitForRequest`
|
||||
* - `page.waitForResponse`
|
||||
* - `page.waitForSelector`
|
||||
* - `page.waitForXPath`
|
||||
*
|
||||
* NOTE page.setDefaultNavigationTimeout takes priority over page.setDefaultTimeout
|
||||
*/
|
||||
setDefaultTimeout(timeout: number): void;
|
||||
|
||||
/**
|
||||
* The extra HTTP headers will be sent with every request the page initiates.
|
||||
* @param headers An object containing additional http headers to be sent with every request. All header values must be strings.
|
||||
@ -2075,8 +2125,15 @@ export interface BrowserOptions {
|
||||
}
|
||||
|
||||
export interface ConnectOptions extends BrowserOptions {
|
||||
/**
|
||||
* A browser url to connect to, in format `http://${host}:${port}`.
|
||||
* Use interchangeably with browserWSEndpoint to let Puppeteer fetch it from metadata endpoint.
|
||||
*/
|
||||
browserURL?: string;
|
||||
|
||||
/** A browser websocket endpoint to connect to. */
|
||||
browserWSEndpoint?: string;
|
||||
|
||||
/**
|
||||
* **Experimental** Specify a custom transport object for Puppeteer to use.
|
||||
*/
|
||||
|
||||
@ -30,6 +30,7 @@ import * as Devices from "puppeteer/DeviceDescriptors";
|
||||
(async () => {
|
||||
const browser = await puppeteer.launch();
|
||||
const page = await browser.newPage();
|
||||
page.setDefaultTimeout(100000);
|
||||
await page.goto("https://news.ycombinator.com", { waitUntil: "networkidle0" });
|
||||
await page.pdf({ path: "hn.pdf", format: "A4" });
|
||||
|
||||
@ -129,7 +130,11 @@ puppeteer.launch().then(async browser => {
|
||||
interceptedRequest.url().endsWith(".jpg")
|
||||
)
|
||||
interceptedRequest.abort();
|
||||
else interceptedRequest.continue();
|
||||
else interceptedRequest.continue({
|
||||
headers: {
|
||||
dope: 'yes',
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
page.keyboard.type("Hello"); // Types instantly
|
||||
@ -237,13 +242,13 @@ puppeteer.launch().then(async browser => {
|
||||
page.type("#myInput", "Hello World!");
|
||||
|
||||
page.on("console", (event: puppeteer.ConsoleMessage, ...args: any[]) => {
|
||||
console.log(event.text, event.type);
|
||||
console.log(event.text(), event.type(), event.location());
|
||||
for (let i = 0; i < args.length; ++i) console.log(`${i}: ${args[i]}`);
|
||||
});
|
||||
|
||||
await button.focus();
|
||||
await button.press("Enter");
|
||||
await button.screenshot({
|
||||
const screenshotOpts: puppeteer.BinaryScreenShotOptions = {
|
||||
type: "jpeg",
|
||||
omitBackground: true,
|
||||
clip: {
|
||||
@ -252,7 +257,8 @@ puppeteer.launch().then(async browser => {
|
||||
width: 200,
|
||||
height: 100
|
||||
}
|
||||
});
|
||||
};
|
||||
await button.screenshot(screenshotOpts);
|
||||
console.log(button.toString());
|
||||
input.type("Hello World", { delay: 10 });
|
||||
|
||||
@ -262,11 +268,15 @@ puppeteer.launch().then(async browser => {
|
||||
|
||||
const metrics = await page.metrics();
|
||||
console.log(metrics.Documents, metrics.Frames, metrics.JSEventListeners);
|
||||
page.on('metrics', data => {
|
||||
const title: string = data.title;
|
||||
const metrics: puppeteer.Metrics = data.metrics;
|
||||
});
|
||||
|
||||
const navResponse = await page.waitForNavigation({
|
||||
timeout: 1000
|
||||
});
|
||||
console.log(navResponse.ok, navResponse.status, navResponse.url, navResponse.headers);
|
||||
console.log(navResponse.ok(), navResponse.status(), navResponse.url(), navResponse.headers()['Content-Type']);
|
||||
|
||||
// evaluate example
|
||||
const bodyHandle = (await page.$('body'))!;
|
||||
@ -309,7 +319,7 @@ puppeteer.launch().then(async browser => {
|
||||
const elementText = await page.$eval(
|
||||
'#someElement',
|
||||
(
|
||||
element, // $ExpectType Element
|
||||
element, // $ExpectType Element
|
||||
) => {
|
||||
element.innerHTML; // $ExpectType string
|
||||
return element.innerHTML;
|
||||
@ -340,15 +350,19 @@ puppeteer.launch().then(async browser => {
|
||||
(async () => {
|
||||
const browser = await puppeteer.launch();
|
||||
const page = await browser.newPage();
|
||||
const handler = (r: puppeteer.Request) => {
|
||||
const handler = async (r: puppeteer.Request) => {
|
||||
const failure = r.failure();
|
||||
|
||||
console.log(r.headers().Test);
|
||||
|
||||
const response = r.response();
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
const text: string = response.statusText();
|
||||
const ip: string = response.remoteAddress().ip;
|
||||
const data = (await response.json()) as string;
|
||||
const randomHeader = response.headers().Test;
|
||||
|
||||
if (failure == null) {
|
||||
console.error("Request completed successfully");
|
||||
@ -454,13 +468,16 @@ puppeteer.launch().then(async browser => {
|
||||
(async () => {
|
||||
const browser = await puppeteer.launch();
|
||||
const page = await browser.newPage();
|
||||
await page.waitFor(1000);
|
||||
await page.waitFor('selector');
|
||||
await page.waitFor('selector', {
|
||||
await page.waitFor(1000); // $ExpectType void
|
||||
const el: puppeteer.ElementHandle = await page.waitFor('selector');
|
||||
const nullableEl: puppeteer.ElementHandle | null = await page.waitFor('selector', {
|
||||
hidden: true,
|
||||
});
|
||||
const el2: puppeteer.ElementHandle = await page.waitFor('selector', {
|
||||
timeout: 123,
|
||||
});
|
||||
await page.waitFor(() => !!document.querySelector('.foo'), {
|
||||
hidden: true,
|
||||
hidden: true,
|
||||
});
|
||||
await page.waitFor((stuff: string) => !!document.querySelector(stuff), {
|
||||
hidden: true,
|
||||
@ -496,11 +513,11 @@ puppeteer.launch().then(async browser => {
|
||||
(async () => {
|
||||
const browser = await puppeteer.launch();
|
||||
const page = await browser.newPage();
|
||||
try {
|
||||
await page.waitFor('test');
|
||||
} catch (err) {
|
||||
console.log(err instanceof TimeoutError);
|
||||
}
|
||||
try {
|
||||
await page.waitFor('test');
|
||||
} catch (err) {
|
||||
console.log(err instanceof TimeoutError);
|
||||
}
|
||||
});
|
||||
|
||||
// domcontentloaded page event test
|
||||
@ -513,3 +530,20 @@ puppeteer.launch().then(async browser => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Element access
|
||||
(async () => {
|
||||
const browser = await puppeteer.launch();
|
||||
const page = await browser.newPage();
|
||||
const el = await page.$('input');
|
||||
const val: string = await (await el!.getProperty('type')).jsonValue();
|
||||
});
|
||||
|
||||
// Request manipualtion
|
||||
(async () => {
|
||||
const browser = await puppeteer.launch();
|
||||
const page = await browser.newPage();
|
||||
await page.setExtraHTTPHeaders({
|
||||
a: '1'
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user