2020-12-27 00:52:05 +03:00
// This file is generated by /utils/generate_types/index.js
/ * *
* Copyright ( c ) Microsoft Corporation .
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* /
import { Protocol } from './protocol' ;
import { ChildProcess } from 'child_process' ;
import { EventEmitter } from 'events' ;
import { Readable } from 'stream' ;
2020-12-27 04:05:57 +03:00
import { Serializable , EvaluationArgument , PageFunction , PageFunctionOn , SmartHandle , ElementHandleForTag , BindingSource } from './structs' ;
2020-12-27 00:52:05 +03:00
type PageWaitForSelectorOptionsNotHidden = PageWaitForSelectorOptions & {
state : 'visible' | 'attached' ;
} ;
type ElementHandleWaitForSelectorOptionsNotHidden = ElementHandleWaitForSelectorOptions & {
state : 'visible' | 'attached' ;
} ;
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ EventEmitter ] ( https : //nodejs.org/api/events.html#events_class_eventemitter)
*
2020-12-29 23:12:46 +03:00
* Page provides methods to interact with a single tab in a [ Browser ] , or an
* [ extension background page ] ( https : //developer.chrome.com/extensions/background_pages) in Chromium. One [Browser]
* instance might have multiple [ Page ] instances .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* This example creates a page , navigates it to a URL , and then saves a screenshot :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( ) ;
* const context = await browser . newContext ( ) ;
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* await page . screenshot ( { path : 'screenshot.png' } ) ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The Page class emits various events ( described below ) which can be handled using any of Node ' s native
* [ ` EventEmitter ` ] ( https : //nodejs.org/api/events.html#events_class_eventemitter) methods, such as `on`, `once` or
* ` removeListener ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* This example logs a message for a single page ` load ` event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . once ( 'load' , ( ) = > console . log ( 'Page loaded!' ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* To unsubscribe from events use the ` removeListener ` method :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* function logRequest ( interceptedRequest ) {
* console . log ( 'A request was made:' , interceptedRequest . url ( ) ) ;
* }
* page . on ( 'request' , logRequest ) ;
* // Sometime later...
* page . removeListener ( 'request' , logRequest ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface Page {
/ * *
2020-12-27 01:31:41 +03:00
* Returns the value of the ` pageFunction ` invocation .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function passed to the ` page.evaluate ` returns a [ Promise ] , then ` page.evaluate ` would wait for the promise to
* resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function passed to the ` page.evaluate ` returns a non - [ Serializable ] value , then ` page.evaluate ` resolves to
* ` undefined ` . DevTools Protocol also supports transferring some additional values that are not serializable by ` JSON ` :
* ` -0 ` , ` NaN ` , ` Infinity ` , ` -Infinity ` , and bigint literals .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Passing argument to ` pageFunction ` :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const result = await page . evaluate ( ( [ x , y ] ) = > {
* return Promise . resolve ( x * y ) ;
* } , [ 7 , 8 ] ) ;
* console . log ( result ) ; // prints "56"
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* A string can also be passed in instead of a function :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* console . log ( await page . evaluate ( '1 + 2' ) ) ; // prints "3"
* const x = 10 ;
* console . log ( await page . evaluate ( ` 1 + ${ x } ` ) ) ; // prints "11"
* ` ` `
2020-12-28 18:03:09 +03:00
*
* [ ElementHandle ] instances can be passed as an argument to the ` page.evaluate ` :
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const bodyHandle = await page . $ ( 'body' ) ;
* const html = await page . evaluate ( ( [ body , suffix ] ) = > body . innerHTML + suffix , [ bodyHandle , 'hello' ] ) ;
* await bodyHandle . dispose ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . evaluate ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frameevaluate).
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in the page context
* @param arg Optional argument to pass to ` pageFunction `
* /
evaluate < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < R > ;
evaluate < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < R > ;
/ * *
2020-12-27 01:31:41 +03:00
* Returns the value of the ` pageFunction ` invocation as in - page object ( JSHandle ) .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The only difference between ` page.evaluate ` and ` page.evaluateHandle ` is that ` page.evaluateHandle ` returns in - page
* object ( JSHandle ) .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function passed to the ` page.evaluateHandle ` returns a [ Promise ] , then ` page.evaluateHandle ` would wait for the
* promise to resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* A string can also be passed in instead of a function :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const aHandle = await page . evaluateHandle ( 'document' ) ; // Handle for the 'document'
* ` ` `
2020-12-28 18:03:09 +03:00
*
* [ JSHandle ] instances can be passed as an argument to the ` page.evaluateHandle ` :
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const aHandle = await page . evaluateHandle ( ( ) = > document . body ) ;
* const resultHandle = await page . evaluateHandle ( body = > body . innerHTML , aHandle ) ;
* console . log ( await resultHandle . jsonValue ( ) ) ;
* await resultHandle . dispose ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in the page context
* @param arg Optional argument to pass to ` pageFunction `
* /
evaluateHandle < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
evaluateHandle < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
2020-12-29 23:12:46 +03:00
* The method finds an element matching the specified selector within the page . If no elements match the selector , the
* return value resolves to ` null ` .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . $ ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frame).
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* /
$ < K extends keyof HTMLElementTagNameMap > ( selector : K ) : Promise < ElementHandleForTag < K > | null > ;
$ ( selector : string ) : Promise < ElementHandle < SVGElement | HTMLElement > | null > ;
/ * *
2020-12-29 23:12:46 +03:00
* The method finds all elements matching the specified selector within the page . If no elements match the selector , the
* return value resolves to ` [] ` .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . $ $ ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frame).
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* /
$ $ < K extends keyof HTMLElementTagNameMap > ( selector : K ) : Promise < ElementHandleForTag < K > [ ] > ;
$ $ ( selector : string ) : Promise < ElementHandle < SVGElement | HTMLElement > [ ] > ;
/ * *
2020-12-29 23:12:46 +03:00
* The method finds an element matching the specified selector within the page and passes it as a first argument to
* ` pageFunction ` . If no elements match the selector , the method throws an error . Returns the value of ` pageFunction ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If ` pageFunction ` returns a [ Promise ] , then
2021-01-07 07:02:51 +03:00
* [ page . $eval ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageeval) would wait for the promise to
* resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Examples :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const searchValue = await page . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await page . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await page . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . $eval ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frameeval).
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* /
$eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , Arg , R > , arg : Arg ) : Promise < R > ;
$eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , Arg , R > , arg : Arg ) : Promise < R > ;
$eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , void , R > , arg? : any ) : Promise < R > ;
$eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , void , R > , arg? : any ) : Promise < R > ;
/ * *
2020-12-29 23:12:46 +03:00
* The method finds all elements matching the specified selector within the page and passes an array of matched elements as
* a first argument to ` pageFunction ` . Returns the result of ` pageFunction ` invocation .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If ` pageFunction ` returns a [ Promise ] , then
2021-01-07 07:02:51 +03:00
* [ page . $ $eval ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageeval) would wait for the promise to
* resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Examples :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const divsCounts = await page . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* /
$ $eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
$ $eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
$ $eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , void , R > , arg? : any ) : Promise < R > ;
$ $eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns when the ` pageFunction ` returns a truthy value . It resolves to a JSHandle of the truthy value .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The ` waitForFunction ` can be used to observe viewport size change :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( ) ;
* const page = await browser . newPage ( ) ;
* const watchDog = page . waitForFunction ( 'window.innerWidth < 100' ) ;
* await page . setViewportSize ( { width : 50 , height : 50 } ) ;
* await watchDog ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* To pass an argument to the predicate of ` page.waitForFunction ` function :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const selector = '.foo' ;
* await page . waitForFunction ( selector = > ! ! document . querySelector ( selector ) , selector ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . waitForFunction ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framewaitforfunction).
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* @param options
* /
waitForFunction < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg , options? : PageWaitForFunctionOptions ) : Promise < SmartHandle < R > > ;
waitForFunction < R > ( pageFunction : PageFunction < void , R > , arg? : any , options? : PageWaitForFunctionOptions ) : Promise < SmartHandle < R > > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* This method works across navigations :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* let currentURL ;
* page
* . waitForSelector ( 'img' )
* . then ( ( ) = > console . log ( 'First URL with image: ' + currentURL ) ) ;
* for ( currentURL of [ 'https://example.com' , 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options? : PageWaitForSelectorOptionsNotHidden ) : Promise < ElementHandleForTag < K > > ;
waitForSelector ( selector : string , options? : PageWaitForSelectorOptionsNotHidden ) : Promise < ElementHandle < SVGElement | HTMLElement > > ;
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options : PageWaitForSelectorOptions ) : Promise < ElementHandleForTag < K > | null > ;
waitForSelector ( selector : string , options : PageWaitForSelectorOptions ) : Promise < null | ElementHandle < SVGElement | HTMLElement > > ;
/ * *
2020-12-29 23:12:46 +03:00
* The method adds a function called ` name ` on the ` window ` object of every frame in this page . When called , the function
2021-01-05 00:50:29 +03:00
* executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` . If the ` callback ` returns
* a [ Promise ] , it will be awaited .
2020-12-28 18:03:09 +03:00
*
2021-01-05 00:50:29 +03:00
* The first argument of the ` callback ` function contains information about the caller : ` { browserContext: BrowserContext,
* page : Page , frame : Frame } ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* See
2021-01-07 07:02:51 +03:00
* [ browserContext . exposeBinding ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextexposebinding)
2020-12-29 23:12:46 +03:00
* for the context - wide version .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Functions installed via ` page.exposeBinding ` survive navigations .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of exposing page URL to all frames in a page :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const context = await browser . newContext ( ) ;
* const page = await context . newPage ( ) ;
* await page . exposeBinding ( 'pageURL' , ( { page } ) = > page . url ( ) ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . pageURL ( ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of passing an element handle :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . exposeBinding ( 'clicked' , async ( source , element ) = > {
* console . log ( await element . textContent ( ) ) ;
* } , { handle : true } ) ;
* await page . setContent ( `
* < script >
* document . addEventListener ( 'click' , event = > window . clicked ( event . target ) ) ;
* < / script >
* < div > Click me < / div >
* < div > Or click me < / div >
* ` );
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param name Name of the function on the window object .
2021-01-05 00:50:29 +03:00
* @param callback Callback function that will be called in the Playwright ' s context .
2020-12-27 00:52:05 +03:00
* @param options
* /
exposeBinding ( name : string , playwrightBinding : ( source : BindingSource , arg : JSHandle ) = > any , options : { handle : true } ) : Promise < void > ;
exposeBinding ( name : string , playwrightBinding : ( source : BindingSource , . . . args : any [ ] ) = > any , options ? : { handle? : boolean } ) : Promise < void > ;
/ * *
* Emitted when the page closes .
* /
on ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when JavaScript within the page calls one of console API methods , e . g . ` console.log ` or ` console.dir ` . Also
* emitted if the page throws an error or a warning .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The arguments passed into ` console.log ` appear as arguments on the event handler .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of handling ` console ` event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'console' , msg = > {
* for ( let i = 0 ; i < msg . args ( ) . length ; ++ i )
* console . log ( ` ${ i } : ${ msg . args ( ) [ i ] } ` ) ;
* } ) ;
* page . evaluate ( ( ) = > console . log ( 'hello' , 5 , { foo : 'bar' } ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
on ( event : 'console' , listener : ( consoleMessage : ConsoleMessage ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page crashes . Browser pages might crash if they try to allocate too much memory . When the page crashes ,
* ongoing and subsequent operations will throw .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The most common way to deal with crashes is to catch an exception :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* try {
* // Crash might happen during a click.
* await page . click ( 'button' ) ;
* // Or while waiting for an event.
* await page . waitForEvent ( 'popup' ) ;
* } catch ( e ) {
* // When the page crashes, exception message contains 'crash'.
* }
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* However , when manually listening to events , it might be useful to avoid stalling when the page crashes . In this case ,
* handling ` crash ` event helps :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await new Promise ( ( resolve , reject ) = > {
* page . on ( 'requestfinished' , async request = > {
* if ( await someProcessing ( request ) )
* resolve ( request ) ;
* } ) ;
* page . on ( 'crash' , error = > reject ( error ) ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
on ( event : 'crash' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Playwright can respond
2021-01-07 07:02:51 +03:00
* to the dialog via [ dialog . accept ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogaccept) or
* [ dialog . dismiss ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogdismiss) methods.
2020-12-27 00:52:05 +03:00
* /
on ( event : 'dialog' , listener : ( dialog : Dialog ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the JavaScript [ ` DOMContentLoaded ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded)
* event is dispatched .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'domcontentloaded' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when attachment download started . User can access basic file operations on downloaded content via the passed
* [ Download ] instance .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Browser context * * must * * be created with the ` acceptDownloads ` set to ` true ` when user needs access to the
* downloaded content . If ` acceptDownloads ` is not set or set to ` false ` , download events are emitted , but the actual
* download is not performed and user has no access to the downloaded files .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'download' , listener : ( download : Download ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a file chooser is supposed to appear , such as after clicking the ` <input type=file> ` . Playwright can
* respond to it via setting the input files using
2021-01-07 07:02:51 +03:00
* [ fileChooser . setFiles ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#filechoosersetfiles) that can
* be uploaded after that .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
on ( event : 'filechooser' , listener : ( fileChooser : FileChooser ) = > void ) : this ;
/ * *
* Emitted when a frame is attached .
* /
on ( event : 'frameattached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is detached .
* /
on ( event : 'framedetached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is navigated to a new url .
* /
on ( event : 'framenavigated' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when the JavaScript [ ` load ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
2020-12-27 00:52:05 +03:00
* /
on ( event : 'load' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when an uncaught exception happens within the page .
* /
on ( event : 'pageerror' , listener : ( error : Error ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page opens a new tab or window . This event is emitted in addition to the
2020-12-31 05:04:51 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextonpage), but
2020-12-29 23:12:46 +03:00
* only for popups relevant to this page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ popup ] = await Promise . all ( [
* page . waitForEvent ( 'popup' ) ,
* page . evaluate ( ( ) = > window . open ( 'https://example.com' ) ) ,
* ] ) ;
* console . log ( await popup . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'popup' , listener : ( page : Page ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a page issues a request . The [ request ] object is read - only . In order to intercept and mutate requests , see
2021-01-07 07:02:51 +03:00
* [ page . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageroute) or
* [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute).
2020-12-27 00:52:05 +03:00
* /
on ( event : 'request' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Emitted when a request fails , for example by timing out .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request
* will complete with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfinished' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfinished)
2020-12-29 23:12:46 +03:00
* event and not with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfailed' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfailed).
2020-12-27 00:52:05 +03:00
* /
on ( event : 'requestfailed' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'requestfinished' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when [ response ] status and headers are received for a request . For a successful response , the sequence of events
* is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'response' , listener : ( response : Response ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when < [ WebSocket ] > request is sent .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'websocket' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned by the
* page .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'worker' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
* Emitted when the page closes .
* /
once ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when JavaScript within the page calls one of console API methods , e . g . ` console.log ` or ` console.dir ` . Also
* emitted if the page throws an error or a warning .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The arguments passed into ` console.log ` appear as arguments on the event handler .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of handling ` console ` event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'console' , msg = > {
* for ( let i = 0 ; i < msg . args ( ) . length ; ++ i )
* console . log ( ` ${ i } : ${ msg . args ( ) [ i ] } ` ) ;
* } ) ;
* page . evaluate ( ( ) = > console . log ( 'hello' , 5 , { foo : 'bar' } ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
once ( event : 'console' , listener : ( consoleMessage : ConsoleMessage ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page crashes . Browser pages might crash if they try to allocate too much memory . When the page crashes ,
* ongoing and subsequent operations will throw .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The most common way to deal with crashes is to catch an exception :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* try {
* // Crash might happen during a click.
* await page . click ( 'button' ) ;
* // Or while waiting for an event.
* await page . waitForEvent ( 'popup' ) ;
* } catch ( e ) {
* // When the page crashes, exception message contains 'crash'.
* }
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* However , when manually listening to events , it might be useful to avoid stalling when the page crashes . In this case ,
* handling ` crash ` event helps :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await new Promise ( ( resolve , reject ) = > {
* page . on ( 'requestfinished' , async request = > {
* if ( await someProcessing ( request ) )
* resolve ( request ) ;
* } ) ;
* page . on ( 'crash' , error = > reject ( error ) ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
once ( event : 'crash' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Playwright can respond
2021-01-07 07:02:51 +03:00
* to the dialog via [ dialog . accept ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogaccept) or
* [ dialog . dismiss ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogdismiss) methods.
2020-12-27 00:52:05 +03:00
* /
once ( event : 'dialog' , listener : ( dialog : Dialog ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the JavaScript [ ` DOMContentLoaded ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded)
* event is dispatched .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'domcontentloaded' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when attachment download started . User can access basic file operations on downloaded content via the passed
* [ Download ] instance .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Browser context * * must * * be created with the ` acceptDownloads ` set to ` true ` when user needs access to the
* downloaded content . If ` acceptDownloads ` is not set or set to ` false ` , download events are emitted , but the actual
* download is not performed and user has no access to the downloaded files .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'download' , listener : ( download : Download ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a file chooser is supposed to appear , such as after clicking the ` <input type=file> ` . Playwright can
* respond to it via setting the input files using
2021-01-07 07:02:51 +03:00
* [ fileChooser . setFiles ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#filechoosersetfiles) that can
* be uploaded after that .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
once ( event : 'filechooser' , listener : ( fileChooser : FileChooser ) = > void ) : this ;
/ * *
* Emitted when a frame is attached .
* /
once ( event : 'frameattached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is detached .
* /
once ( event : 'framedetached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is navigated to a new url .
* /
once ( event : 'framenavigated' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when the JavaScript [ ` load ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
2020-12-27 00:52:05 +03:00
* /
once ( event : 'load' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when an uncaught exception happens within the page .
* /
once ( event : 'pageerror' , listener : ( error : Error ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page opens a new tab or window . This event is emitted in addition to the
2020-12-31 05:04:51 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextonpage), but
2020-12-29 23:12:46 +03:00
* only for popups relevant to this page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ popup ] = await Promise . all ( [
* page . waitForEvent ( 'popup' ) ,
* page . evaluate ( ( ) = > window . open ( 'https://example.com' ) ) ,
* ] ) ;
* console . log ( await popup . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'popup' , listener : ( page : Page ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a page issues a request . The [ request ] object is read - only . In order to intercept and mutate requests , see
2021-01-07 07:02:51 +03:00
* [ page . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageroute) or
* [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute).
2020-12-27 00:52:05 +03:00
* /
once ( event : 'request' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Emitted when a request fails , for example by timing out .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request
* will complete with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfinished' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfinished)
2020-12-29 23:12:46 +03:00
* event and not with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfailed' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfailed).
2020-12-27 00:52:05 +03:00
* /
once ( event : 'requestfailed' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'requestfinished' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when [ response ] status and headers are received for a request . For a successful response , the sequence of events
* is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'response' , listener : ( response : Response ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when < [ WebSocket ] > request is sent .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'websocket' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned by the
* page .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'worker' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
* Emitted when the page closes .
* /
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when JavaScript within the page calls one of console API methods , e . g . ` console.log ` or ` console.dir ` . Also
* emitted if the page throws an error or a warning .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The arguments passed into ` console.log ` appear as arguments on the event handler .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of handling ` console ` event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'console' , msg = > {
* for ( let i = 0 ; i < msg . args ( ) . length ; ++ i )
* console . log ( ` ${ i } : ${ msg . args ( ) [ i ] } ` ) ;
* } ) ;
* page . evaluate ( ( ) = > console . log ( 'hello' , 5 , { foo : 'bar' } ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'console' , listener : ( consoleMessage : ConsoleMessage ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page crashes . Browser pages might crash if they try to allocate too much memory . When the page crashes ,
* ongoing and subsequent operations will throw .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The most common way to deal with crashes is to catch an exception :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* try {
* // Crash might happen during a click.
* await page . click ( 'button' ) ;
* // Or while waiting for an event.
* await page . waitForEvent ( 'popup' ) ;
* } catch ( e ) {
* // When the page crashes, exception message contains 'crash'.
* }
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* However , when manually listening to events , it might be useful to avoid stalling when the page crashes . In this case ,
* handling ` crash ` event helps :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await new Promise ( ( resolve , reject ) = > {
* page . on ( 'requestfinished' , async request = > {
* if ( await someProcessing ( request ) )
* resolve ( request ) ;
* } ) ;
* page . on ( 'crash' , error = > reject ( error ) ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'crash' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Playwright can respond
2021-01-07 07:02:51 +03:00
* to the dialog via [ dialog . accept ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogaccept) or
* [ dialog . dismiss ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogdismiss) methods.
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'dialog' , listener : ( dialog : Dialog ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the JavaScript [ ` DOMContentLoaded ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded)
* event is dispatched .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'domcontentloaded' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when attachment download started . User can access basic file operations on downloaded content via the passed
* [ Download ] instance .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Browser context * * must * * be created with the ` acceptDownloads ` set to ` true ` when user needs access to the
* downloaded content . If ` acceptDownloads ` is not set or set to ` false ` , download events are emitted , but the actual
* download is not performed and user has no access to the downloaded files .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'download' , listener : ( download : Download ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a file chooser is supposed to appear , such as after clicking the ` <input type=file> ` . Playwright can
* respond to it via setting the input files using
2021-01-07 07:02:51 +03:00
* [ fileChooser . setFiles ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#filechoosersetfiles) that can
* be uploaded after that .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'filechooser' , listener : ( fileChooser : FileChooser ) = > void ) : this ;
/ * *
* Emitted when a frame is attached .
* /
addListener ( event : 'frameattached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is detached .
* /
addListener ( event : 'framedetached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is navigated to a new url .
* /
addListener ( event : 'framenavigated' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when the JavaScript [ ` load ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'load' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when an uncaught exception happens within the page .
* /
addListener ( event : 'pageerror' , listener : ( error : Error ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page opens a new tab or window . This event is emitted in addition to the
2020-12-31 05:04:51 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextonpage), but
2020-12-29 23:12:46 +03:00
* only for popups relevant to this page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ popup ] = await Promise . all ( [
* page . waitForEvent ( 'popup' ) ,
* page . evaluate ( ( ) = > window . open ( 'https://example.com' ) ) ,
* ] ) ;
* console . log ( await popup . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'popup' , listener : ( page : Page ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a page issues a request . The [ request ] object is read - only . In order to intercept and mutate requests , see
2021-01-07 07:02:51 +03:00
* [ page . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageroute) or
* [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute).
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'request' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Emitted when a request fails , for example by timing out .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request
* will complete with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfinished' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfinished)
2020-12-29 23:12:46 +03:00
* event and not with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfailed' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfailed).
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'requestfailed' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'requestfinished' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when [ response ] status and headers are received for a request . For a successful response , the sequence of events
* is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'response' , listener : ( response : Response ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when < [ WebSocket ] > request is sent .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'websocket' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned by the
* page .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'worker' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
* Emitted when the page closes .
* /
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when JavaScript within the page calls one of console API methods , e . g . ` console.log ` or ` console.dir ` . Also
* emitted if the page throws an error or a warning .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The arguments passed into ` console.log ` appear as arguments on the event handler .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of handling ` console ` event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'console' , msg = > {
* for ( let i = 0 ; i < msg . args ( ) . length ; ++ i )
* console . log ( ` ${ i } : ${ msg . args ( ) [ i ] } ` ) ;
* } ) ;
* page . evaluate ( ( ) = > console . log ( 'hello' , 5 , { foo : 'bar' } ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'console' , listener : ( consoleMessage : ConsoleMessage ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page crashes . Browser pages might crash if they try to allocate too much memory . When the page crashes ,
* ongoing and subsequent operations will throw .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The most common way to deal with crashes is to catch an exception :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* try {
* // Crash might happen during a click.
* await page . click ( 'button' ) ;
* // Or while waiting for an event.
* await page . waitForEvent ( 'popup' ) ;
* } catch ( e ) {
* // When the page crashes, exception message contains 'crash'.
* }
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* However , when manually listening to events , it might be useful to avoid stalling when the page crashes . In this case ,
* handling ` crash ` event helps :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await new Promise ( ( resolve , reject ) = > {
* page . on ( 'requestfinished' , async request = > {
* if ( await someProcessing ( request ) )
* resolve ( request ) ;
* } ) ;
* page . on ( 'crash' , error = > reject ( error ) ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'crash' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Playwright can respond
2021-01-07 07:02:51 +03:00
* to the dialog via [ dialog . accept ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogaccept) or
* [ dialog . dismiss ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogdismiss) methods.
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'dialog' , listener : ( dialog : Dialog ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the JavaScript [ ` DOMContentLoaded ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded)
* event is dispatched .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'domcontentloaded' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when attachment download started . User can access basic file operations on downloaded content via the passed
* [ Download ] instance .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Browser context * * must * * be created with the ` acceptDownloads ` set to ` true ` when user needs access to the
* downloaded content . If ` acceptDownloads ` is not set or set to ` false ` , download events are emitted , but the actual
* download is not performed and user has no access to the downloaded files .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'download' , listener : ( download : Download ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a file chooser is supposed to appear , such as after clicking the ` <input type=file> ` . Playwright can
* respond to it via setting the input files using
2021-01-07 07:02:51 +03:00
* [ fileChooser . setFiles ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#filechoosersetfiles) that can
* be uploaded after that .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'filechooser' , listener : ( fileChooser : FileChooser ) = > void ) : this ;
/ * *
* Emitted when a frame is attached .
* /
removeListener ( event : 'frameattached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is detached .
* /
removeListener ( event : 'framedetached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is navigated to a new url .
* /
removeListener ( event : 'framenavigated' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when the JavaScript [ ` load ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'load' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when an uncaught exception happens within the page .
* /
removeListener ( event : 'pageerror' , listener : ( error : Error ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page opens a new tab or window . This event is emitted in addition to the
2020-12-31 05:04:51 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextonpage), but
2020-12-29 23:12:46 +03:00
* only for popups relevant to this page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ popup ] = await Promise . all ( [
* page . waitForEvent ( 'popup' ) ,
* page . evaluate ( ( ) = > window . open ( 'https://example.com' ) ) ,
* ] ) ;
* console . log ( await popup . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'popup' , listener : ( page : Page ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a page issues a request . The [ request ] object is read - only . In order to intercept and mutate requests , see
2021-01-07 07:02:51 +03:00
* [ page . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageroute) or
* [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute).
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'request' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Emitted when a request fails , for example by timing out .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request
* will complete with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfinished' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfinished)
2020-12-29 23:12:46 +03:00
* event and not with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfailed' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfailed).
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'requestfailed' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'requestfinished' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when [ response ] status and headers are received for a request . For a successful response , the sequence of events
* is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'response' , listener : ( response : Response ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when < [ WebSocket ] > request is sent .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'websocket' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned by the
* page .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'worker' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
* Emitted when the page closes .
* /
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when JavaScript within the page calls one of console API methods , e . g . ` console.log ` or ` console.dir ` . Also
* emitted if the page throws an error or a warning .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The arguments passed into ` console.log ` appear as arguments on the event handler .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of handling ` console ` event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'console' , msg = > {
* for ( let i = 0 ; i < msg . args ( ) . length ; ++ i )
* console . log ( ` ${ i } : ${ msg . args ( ) [ i ] } ` ) ;
* } ) ;
* page . evaluate ( ( ) = > console . log ( 'hello' , 5 , { foo : 'bar' } ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
off ( event : 'console' , listener : ( consoleMessage : ConsoleMessage ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page crashes . Browser pages might crash if they try to allocate too much memory . When the page crashes ,
* ongoing and subsequent operations will throw .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The most common way to deal with crashes is to catch an exception :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* try {
* // Crash might happen during a click.
* await page . click ( 'button' ) ;
* // Or while waiting for an event.
* await page . waitForEvent ( 'popup' ) ;
* } catch ( e ) {
* // When the page crashes, exception message contains 'crash'.
* }
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* However , when manually listening to events , it might be useful to avoid stalling when the page crashes . In this case ,
* handling ` crash ` event helps :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await new Promise ( ( resolve , reject ) = > {
* page . on ( 'requestfinished' , async request = > {
* if ( await someProcessing ( request ) )
* resolve ( request ) ;
* } ) ;
* page . on ( 'crash' , error = > reject ( error ) ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
off ( event : 'crash' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Playwright can respond
2021-01-07 07:02:51 +03:00
* to the dialog via [ dialog . accept ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogaccept) or
* [ dialog . dismiss ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogdismiss) methods.
2020-12-27 00:52:05 +03:00
* /
off ( event : 'dialog' , listener : ( dialog : Dialog ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the JavaScript [ ` DOMContentLoaded ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded)
* event is dispatched .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'domcontentloaded' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when attachment download started . User can access basic file operations on downloaded content via the passed
* [ Download ] instance .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Browser context * * must * * be created with the ` acceptDownloads ` set to ` true ` when user needs access to the
* downloaded content . If ` acceptDownloads ` is not set or set to ` false ` , download events are emitted , but the actual
* download is not performed and user has no access to the downloaded files .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'download' , listener : ( download : Download ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a file chooser is supposed to appear , such as after clicking the ` <input type=file> ` . Playwright can
* respond to it via setting the input files using
2021-01-07 07:02:51 +03:00
* [ fileChooser . setFiles ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#filechoosersetfiles) that can
* be uploaded after that .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
off ( event : 'filechooser' , listener : ( fileChooser : FileChooser ) = > void ) : this ;
/ * *
* Emitted when a frame is attached .
* /
off ( event : 'frameattached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is detached .
* /
off ( event : 'framedetached' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
* Emitted when a frame is navigated to a new url .
* /
off ( event : 'framenavigated' , listener : ( frame : Frame ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when the JavaScript [ ` load ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
2020-12-27 00:52:05 +03:00
* /
off ( event : 'load' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when an uncaught exception happens within the page .
* /
off ( event : 'pageerror' , listener : ( error : Error ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page opens a new tab or window . This event is emitted in addition to the
2020-12-31 05:04:51 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextonpage), but
2020-12-29 23:12:46 +03:00
* only for popups relevant to this page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ popup ] = await Promise . all ( [
* page . waitForEvent ( 'popup' ) ,
* page . evaluate ( ( ) = > window . open ( 'https://example.com' ) ) ,
* ] ) ;
* console . log ( await popup . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'popup' , listener : ( page : Page ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a page issues a request . The [ request ] object is read - only . In order to intercept and mutate requests , see
2021-01-07 07:02:51 +03:00
* [ page . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageroute) or
* [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute).
2020-12-27 00:52:05 +03:00
* /
off ( event : 'request' , listener : ( request : Request ) = > void ) : this ;
/ * *
* Emitted when a request fails , for example by timing out .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request
* will complete with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfinished' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfinished)
2020-12-29 23:12:46 +03:00
* event and not with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfailed' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfailed).
2020-12-27 00:52:05 +03:00
* /
off ( event : 'requestfailed' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'requestfinished' , listener : ( request : Request ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when [ response ] status and headers are received for a request . For a successful response , the sequence of events
* is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'response' , listener : ( response : Response ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when < [ WebSocket ] > request is sent .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'websocket' , listener : ( webSocket : WebSocket ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned by the
* page .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'worker' , listener : ( worker : Worker ) = > void ) : this ;
accessibility : Accessibility ;
/ * *
* Adds a script which would be evaluated in one of the following scenarios :
2020-12-27 01:31:41 +03:00
* - Whenever the page is navigated .
2020-12-29 23:12:46 +03:00
* - Whenever the child frame is attached or navigated . In this case , the script is evaluated in the context of the newly
* attached frame .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The script is evaluated after the document was created but before any of its scripts were run . This is useful to amend
* the JavaScript environment , e . g . to seed ` Math.random ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of overriding ` Math.random ` before the page loads :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // preload.js
* Math . random = ( ) = > 42 ;
*
* // In your playwright script, assuming the preload.js file is in same directory
* const preloadFile = fs . readFileSync ( './preload.js' , 'utf8' ) ;
* await page . addInitScript ( preloadFile ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * The order of evaluation of multiple scripts installed via
2021-01-07 07:02:51 +03:00
* [ browserContext . addInitScript ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextaddinitscript)
* and [ page . addInitScript ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageaddinitscript) is not
* defined .
2020-12-27 00:52:05 +03:00
* @param script Script to be evaluated in the page .
* @param arg Optional argument to pass to ` script ` ( only supported when passing a function ) .
* /
addInitScript ( script : Function | string | {
/ * *
2020-12-29 23:12:46 +03:00
* Path to the JavaScript file . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . Optional .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Raw script content . Optional .
2020-12-27 00:52:05 +03:00
* /
content? : string ;
} , arg? : Serializable ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* Adds a ` <script> ` tag into the page with the desired url or content . Returns the added tag when the script ' s onload
* fires or when the script content was injected into frame .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . addScriptTag ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frameaddscripttag).
2020-12-27 00:52:05 +03:00
* @param params
* /
addScriptTag ( params : {
/ * *
2020-12-28 18:03:09 +03:00
* URL of a script to be added . Optional .
2020-12-27 00:52:05 +03:00
* /
url? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Path to the JavaScript file to be injected into frame . If ` path ` is a relative path , then it is resolved relative to the
* current working directory . Optional .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Raw JavaScript content to be injected into frame . Optional .
2020-12-27 00:52:05 +03:00
* /
content? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Script type . Use 'module' in order to load a Javascript ES6 module . See
* [ script ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/script) for more details. Optional.
2020-12-27 00:52:05 +03:00
* /
type ? : string ;
} ) : Promise < ElementHandle > ;
/ * *
2020-12-29 23:12:46 +03:00
* Adds a ` <link rel="stylesheet"> ` tag into the page with the desired url or a ` <style type="text/css"> ` tag with the
* content . Returns the added tag when the stylesheet ' s onload fires or when the CSS content was injected into frame .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . addStyleTag ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frameaddstyletag).
2020-12-27 00:52:05 +03:00
* @param params
* /
addStyleTag ( params : {
/ * *
2020-12-28 18:03:09 +03:00
* URL of the ` <link> ` tag . Optional .
2020-12-27 00:52:05 +03:00
* /
url? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Path to the CSS file to be injected into frame . If ` path ` is a relative path , then it is resolved relative to the
* current working directory . Optional .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Raw CSS content to be injected into frame . Optional .
2020-12-27 00:52:05 +03:00
* /
content? : string ;
} ) : Promise < ElementHandle > ;
/ * *
* Brings page to front ( activates tab ) .
* /
bringToFront ( ) : Promise < void > ;
/ * *
* This method checks an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method rejects . If the element is already
* checked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to click in the center
2020-12-29 23:12:46 +03:00
* of the element .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked . If not , this method rejects .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . check ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framecheck).
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
check ( selector : string , options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method clicks an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to click in the center
2020-12-29 23:12:46 +03:00
* of the element , or the specified ` position ` .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . click ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frameclick).
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
click ( selector : string , options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-28 18:03:09 +03:00
* defaults to 1 . See [ UIEvent . detail ] .
2020-12-27 00:52:05 +03:00
* /
clickCount? : number ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* If ` runBeforeUnload ` is ` false ` , does not run any unload handlers and waits for the page to be closed . If
* ` runBeforeUnload ` is ` true ` the method will run unload handlers , but will * * not * * wait for the page to close .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* By default , ` page.close() ` * * does not * * run ` beforeunload ` handlers .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * if ` runBeforeUnload ` is passed as true , a ` beforeunload ` dialog might be summoned
2020-12-29 23:12:46 +03:00
* > and should be handled manually via
2020-12-31 05:04:51 +03:00
* [ page . on ( 'dialog' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageondialog) event.
2020-12-27 00:52:05 +03:00
* @param options
* /
close ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Defaults to ` false ` . Whether to run the
* [ before unload ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/beforeunload) page handlers.
2020-12-27 00:52:05 +03:00
* /
runBeforeUnload? : boolean ;
} ) : Promise < void > ;
/ * *
* Gets the full HTML contents of the page , including the doctype .
* /
content ( ) : Promise < string > ;
/ * *
* Get the browser context that the page belongs to .
* /
context ( ) : BrowserContext ;
/ * *
2020-12-29 23:12:46 +03:00
* Browser - specific Coverage implementation , only available for Chromium atm . See
* [ ChromiumCoverage ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#class-chromiumcoverage) for more details.
2020-12-27 00:52:05 +03:00
* /
coverage : null | ChromiumCoverage ;
/ * *
* This method double clicks an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to double click in the
2020-12-29 23:12:46 +03:00
* center of the element , or the specified ` position ` .
2020-12-31 05:04:51 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set . Note that if the
* first click of the ` dblclick() ` triggers a navigation event , this method will reject .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * ` page.dblclick() ` dispatches two ` click ` events and a single ` dblclick ` event .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . dblclick ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framedblclick).
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
dblclick ( selector : string , options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* The snippet below dispatches the ` click ` event on the element . Regardless of the visibility state of the elment , ` click `
* is dispatched . This is equivalend to calling
* [ element . click ( ) ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . dispatchEvent ( 'button#submit' , 'click' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Under the hood , it creates an instance of an event based on the given ` type ` , initializes it with ` eventInit ` properties
* and dispatches it on the element . Events are ` composed ` , ` cancelable ` and bubble by default .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Since ` eventInit ` is event - specific , please refer to the events documentation for the lists of initial properties :
2020-12-28 18:03:09 +03:00
* - [ DragEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
* - [ FocusEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
* - [ KeyboardEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
* - [ MouseEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
* - [ PointerEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
* - [ TouchEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
* - [ Event ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Event/Event)
*
2020-12-27 00:52:05 +03:00
* You can also specify ` JSHandle ` as the property value if you want live objects to be passed into the event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // Note you can only create DataTransfer in Chromium and Firefox
* const dataTransfer = await page . evaluateHandle ( ( ) = > new DataTransfer ( ) ) ;
* await page . dispatchEvent ( '#source' , 'dragstart' , { dataTransfer } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param type DOM event type : ` "click" ` , ` "dragstart" ` , etc .
* @param eventInit Optional event - specific initialization properties .
* @param options
* /
dispatchEvent ( selector : string , type : string , eventInit? : EvaluationArgument , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . evaluate ( ( ) = > matchMedia ( 'screen' ) . matches ) ;
* // → true
* await page . evaluate ( ( ) = > matchMedia ( 'print' ) . matches ) ;
* // → false
*
* await page . emulateMedia ( { media : 'print' } ) ;
* await page . evaluate ( ( ) = > matchMedia ( 'screen' ) . matches ) ;
* // → false
* await page . evaluate ( ( ) = > matchMedia ( 'print' ) . matches ) ;
* // → true
*
* await page . emulateMedia ( { } ) ;
* await page . evaluate ( ( ) = > matchMedia ( 'screen' ) . matches ) ;
* // → true
* await page . evaluate ( ( ) = > matchMedia ( 'print' ) . matches ) ;
* // → false
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . emulateMedia ( { colorScheme : 'dark' } ) ;
* await page . evaluate ( ( ) = > matchMedia ( '(prefers-color-scheme: dark)' ) . matches ) ;
* // → true
* await page . evaluate ( ( ) = > matchMedia ( '(prefers-color-scheme: light)' ) . matches ) ;
* // → false
* await page . evaluate ( ( ) = > matchMedia ( '(prefers-color-scheme: no-preference)' ) . matches ) ;
* // → false
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param params
* /
emulateMedia ( params : {
/ * *
2020-12-29 23:12:46 +03:00
* Changes the CSS media type of the page . The only allowed values are ` 'screen' ` , ` 'print' ` and ` null ` . Passing ` null `
* disables CSS media emulation . Omitting ` media ` or passing ` undefined ` does not change the emulated value . Optional .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
media? : null | "screen" | "print" ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . Passing
* ` null ` disables color scheme emulation . Omitting ` colorScheme ` or passing ` undefined ` does not change the emulated
* value . Optional .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
colorScheme? : null | "light" | "dark" | "no-preference" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* The method adds a function called ` name ` on the ` window ` object of every frame in the page . When called , the function
2021-01-05 00:50:29 +03:00
* executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` .
2020-12-28 18:03:09 +03:00
*
2021-01-05 00:50:29 +03:00
* If the ` callback ` returns a [ Promise ] , it will be awaited .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* See
2021-01-07 07:02:51 +03:00
* [ browserContext . exposeFunction ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextexposefunction)
2020-12-29 23:12:46 +03:00
* for context - wide exposed function .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Functions installed via ` page.exposeFunction ` survive navigations .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of adding an ` md5 ` function to the page :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
* const crypto = require ( 'crypto' ) ;
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const page = await browser . newPage ( ) ;
* await page . exposeFunction ( 'md5' , text = > crypto . createHash ( 'md5' ) . update ( text ) . digest ( 'hex' ) ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . md5 ( 'PLAYWRIGHT' ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of adding a ` window.readfile ` function to the page :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
* const fs = require ( 'fs' ) ;
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* page . on ( 'console' , msg = > console . log ( msg . text ( ) ) ) ;
* await page . exposeFunction ( 'readfile' , async filePath = > {
* return new Promise ( ( resolve , reject ) = > {
* fs . readFile ( filePath , 'utf8' , ( err , text ) = > {
* if ( err )
* reject ( err ) ;
* else
* resolve ( text ) ;
* } ) ;
* } ) ;
* } ) ;
* await page . evaluate ( async ( ) = > {
* // use window.readfile to read contents of a file
* const content = await window . readfile ( '/etc/hosts' ) ;
* console . log ( content ) ;
* } ) ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param name Name of the function on the window object
2021-01-05 00:50:29 +03:00
* @param callback Callback function which will be called in Playwright ' s context .
2020-12-27 00:52:05 +03:00
* /
2021-01-05 00:50:29 +03:00
exposeFunction ( name : string , callback : Function ) : Promise < void > ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* This method waits for an element matching ` selector ` , waits for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks, focuses the
* element , fills it and triggers an ` input ` event after filling . If the element matching ` selector ` is not an ` <input> ` ,
* ` <textarea> ` or ` [contenteditable] ` element , this method throws an error . Note that you can pass an empty string to
* clear the input field .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* To send fine - grained keyboard events , use
2021-01-07 07:02:51 +03:00
* [ page . type ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagetype).
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . fill ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framefill)
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param value Value to fill for the ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element .
* @param options
* /
fill ( selector : string , value : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method fetches an element with ` selector ` and focuses it . If there ' s no element matching ` selector ` , the method
* waits until a matching element appears in the DOM .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . focus ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framefocus).
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
focus ( selector : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns frame matching the specified criteria . Either ` name ` or ` url ` must be specified .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const frame = page . frame ( 'frame-name' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const frame = page . frame ( { url : / . * d o m a i n . * \ / } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param frameSelector Frame name or other frame lookup options .
* /
frame ( frameSelector : string | {
/ * *
2020-12-28 18:03:09 +03:00
* Frame name specified in the ` iframe ` ' s ` name ` attribute . Optional .
2020-12-27 00:52:05 +03:00
* /
name? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* A glob pattern , regex pattern or predicate receiving frame ' s ` url ` as a [ URL ] object . Optional .
2020-12-27 00:52:05 +03:00
* /
2021-01-05 00:50:29 +03:00
url? : string | RegExp | ( ( url : URL ) = > boolean ) ;
2020-12-27 00:52:05 +03:00
} ) : null | Frame ;
/ * *
* An array of all frames attached to the page .
* /
frames ( ) : Array < Frame > ;
/ * *
* Returns element attribute value .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param name Attribute name to get the value for .
* @param options
* /
getAttribute ( selector : string , name : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect . If can not go back , returns ` null ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Navigate to the previous page in history .
* @param options
* /
goBack ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
waitUntil ? : "load" | "domcontentloaded" | "networkidle" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < null | Response > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect . If can not go forward , returns ` null ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Navigate to the next page in history .
* @param options
* /
goForward ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
waitUntil ? : "load" | "domcontentloaded" | "networkidle" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < null | Response > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` page.goto ` will throw an error if :
2020-12-27 01:31:41 +03:00
* - there ' s an SSL error ( e . g . in case of self - signed certificates ) .
* - target URL is invalid .
* - the ` timeout ` is exceeded during navigation .
* - the remote server does not respond or is unreachable .
* - the main resource failed to load .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` page.goto ` will not throw an error when any valid HTTP status code is returned by the remote server , including 404 " Not
* Found " and 500 " Internal Server Error " . The status code for such responses can be retrieved by calling
2021-01-07 07:02:51 +03:00
* [ response . status ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#responsestatus).
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * ` page.goto ` either throws an error or returns a main resource response . The only exceptions are navigation to
* ` about:blank ` or navigation to the same URL with a different hash , which would succeed and return ` null ` .
* > * * NOTE * * Headless mode doesn ' t support navigation to a PDF document . See the
* [ upstream issue ] ( https : //bugs.chromium.org/p/chromium/issues/detail?id=761295).
2020-12-27 00:52:05 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . goto ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framegoto)
2020-12-27 00:52:05 +03:00
* @param url URL to navigate page to . The url should include scheme , e . g . ` https:// ` .
* @param options
* /
goto ( url : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Referer header value . If provided it will take preference over the referer header value set by
2021-01-07 07:02:51 +03:00
* [ page . setExtraHTTPHeaders ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetextrahttpheaders).
2020-12-27 00:52:05 +03:00
* /
referer? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
waitUntil ? : "load" | "domcontentloaded" | "networkidle" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < null | Response > ;
/ * *
* This method hovers over an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to hover over the
2020-12-29 23:12:46 +03:00
* center of the element , or the specified ` position ` .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . hover ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framehover).
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
hover ( selector : string , options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns ` element.innerHTML ` .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
innerHTML ( selector : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns ` element.innerText ` .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
innerText ( selector : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Indicates that the page has been closed .
* /
isClosed ( ) : boolean ;
keyboard : Keyboard ;
/ * *
* The page ' s main frame . Page is guaranteed to have a main frame which persists during navigations .
* /
mainFrame ( ) : Frame ;
mouse : Mouse ;
/ * *
* Returns the opener for popup pages and ` null ` for others . If the opener has been closed already the returns ` null ` .
* /
opener ( ) : Promise < null | Page > ;
/ * *
* Returns the PDF buffer .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Generating a pdf is currently only supported in Chromium headless .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* ` page.pdf() ` generates a pdf of the page with ` print ` css media . To generate a pdf with ` screen ` media , call
2021-01-07 07:02:51 +03:00
* [ page . emulateMedia ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageemulatemedia) before calling
* ` page.pdf() ` :
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * By default , ` page.pdf() ` generates a pdf with modified colors for printing . Use the
* [ ` -webkit-print-color-adjust ` ] ( https : //developer.mozilla.org/en-US/docs/Web/CSS/-webkit-print-color-adjust) property to
* force rendering of exact colors .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // Generates a PDF with 'screen' media type.
* await page . emulateMedia ( { media : 'screen' } ) ;
* await page . pdf ( { path : 'page.pdf' } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The ` width ` , ` height ` , and ` margin ` options accept values labeled with units . Unlabeled values are treated as pixels .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* A few examples :
2020-12-27 01:31:41 +03:00
* - ` page.pdf({width: 100}) ` - prints with width set to 100 pixels
* - ` page.pdf({width: '100px'}) ` - prints with width set to 100 pixels
* - ` page.pdf({width: '10cm'}) ` - prints with width set to 10 centimeters .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* All possible units are :
2020-12-27 01:31:41 +03:00
* - ` px ` - pixel
* - ` in ` - inch
* - ` cm ` - centimeter
* - ` mm ` - millimeter
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The ` format ` options are :
2020-12-27 01:31:41 +03:00
* - ` Letter ` : 8.5 in x 11 in
* - ` Legal ` : 8.5 in x 14 in
* - ` Tabloid ` : 11 in x 17 in
* - ` Ledger ` : 17 in x 11 in
* - ` A0 ` : 33.1 in x 46.8 in
* - ` A1 ` : 23.4 in x 33.1 in
* - ` A2 ` : 16.54 in x 23.4 in
* - ` A3 ` : 11.7 in x 16.54 in
* - ` A4 ` : 8.27 in x 11.7 in
* - ` A5 ` : 5.83 in x 8.27 in
* - ` A6 ` : 4.13 in x 5.83 in
*
* > * * NOTE * * ` headerTemplate ` and ` footerTemplate ` markup have the following limitations :
* > 1 . Script tags inside templates are not evaluated .
* > 2 . Page styles are not visible inside templates .
2020-12-27 00:52:05 +03:00
* @param options
* /
pdf ( options ? : {
/ * *
* Display header and footer . Defaults to ` false ` .
* /
displayHeaderFooter? : boolean ;
/ * *
* HTML template for the print footer . Should use the same format as the ` headerTemplate ` .
* /
footerTemplate? : string ;
/ * *
* Paper format . If set , takes priority over ` width ` or ` height ` options . Defaults to 'Letter' .
* /
format? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* HTML template for the print header . Should be valid HTML markup with following classes used to inject printing values
* into them :
2020-12-27 01:31:41 +03:00
* - ` 'date' ` formatted print date
* - ` 'title' ` document title
* - ` 'url' ` document location
* - ` 'pageNumber' ` current page number
* - ` 'totalPages' ` total pages in the document
2020-12-27 00:52:05 +03:00
* /
headerTemplate? : string ;
/ * *
* Paper height , accepts values labeled with units .
* /
height? : string | number ;
/ * *
* Paper orientation . Defaults to ` false ` .
* /
landscape? : boolean ;
/ * *
* Paper margins , defaults to none .
* /
margin ? : {
/ * *
* Top margin , accepts values labeled with units . Defaults to ` 0 ` .
* /
top? : string | number ;
/ * *
* Right margin , accepts values labeled with units . Defaults to ` 0 ` .
* /
right? : string | number ;
/ * *
* Bottom margin , accepts values labeled with units . Defaults to ` 0 ` .
* /
bottom? : string | number ;
/ * *
* Left margin , accepts values labeled with units . Defaults to ` 0 ` .
* /
left? : string | number ;
} ;
/ * *
* Paper ranges to print , e . g . , '1-5, 8, 11-13' . Defaults to the empty string , which means print all pages .
* /
pageRanges? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* The file path to save the PDF to . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . If no path is provided , the PDF won ' t be saved to the disk .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Give any CSS ` @page ` size declared in the page priority over what is declared in ` width ` and ` height ` or ` format `
* options . Defaults to ` false ` , which will scale the content to fit the paper size .
2020-12-27 00:52:05 +03:00
* /
preferCSSPageSize? : boolean ;
/ * *
* Print background graphics . Defaults to ` false ` .
* /
printBackground? : boolean ;
/ * *
* Scale of the webpage rendering . Defaults to ` 1 ` . Scale amount must be between 0.1 and 2 .
* /
scale? : number ;
/ * *
* Paper width , accepts values labeled with units .
* /
width? : string | number ;
} ) : Promise < Buffer > ;
/ * *
2020-12-29 23:12:46 +03:00
* Focuses the element , and then uses
2021-01-07 07:02:51 +03:00
* [ keyboard . down ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboarddown) and
* [ keyboard . up ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardup).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
2020-12-28 18:03:09 +03:00
*
2020-12-27 01:31:41 +03:00
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcuts such as ` key: "Control+o" ` or ` key: "Control+Shift+T" ` are supported as well . When speficied with the
* modifier , modifier is pressed and being held while the subsequent key is being pressed .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://keycode.info' ) ;
* await page . press ( 'body' , 'A' ) ;
* await page . screenshot ( { path : 'A.png' } ) ;
* await page . press ( 'body' , 'ArrowLeft' ) ;
* await page . screenshot ( { path : 'ArrowLeft.png' } ) ;
* await page . press ( 'body' , 'Shift+O' ) ;
* await page . screenshot ( { path : 'O.png' } ) ;
* await browser . close ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* @param options
* /
press ( selector : string , key : string , options ? : {
/ * *
* Time to wait between ` keydown ` and ` keyup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect .
2020-12-27 00:52:05 +03:00
* @param options
* /
reload ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
waitUntil ? : "load" | "domcontentloaded" | "networkidle" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < null | Response > ;
/ * *
* Routing provides the capability to modify network requests that are made by a page .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Once routing is enabled , every request matching the url pattern will stall unless it ' s continued , fulfilled or aborted .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * The handler will only be called for the first url if the response is a redirect .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of a naïve handler that aborts all image requests :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . route ( '**\/*.{png,jpg,jpeg}' , route = > route . abort ( ) ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* or the same snippet using a regex pattern instead :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . route ( /(\.png$)|(\.jpg$)/ , route = > route . abort ( ) ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Page routes take precedence over browser context routes ( set up with
2021-01-07 07:02:51 +03:00
* [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute)) when
* request matches both handlers .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Enabling routing disables http cache .
2020-12-28 18:03:09 +03:00
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] to match while routing .
2020-12-27 00:52:05 +03:00
* @param handler handler function to route the request .
* /
route ( url : string | RegExp | ( ( url : URL ) = > boolean ) , handler : ( ( route : Route , request : Request ) = > void ) ) : Promise < void > ;
/ * *
* Returns the buffer with the captured screenshot .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Screenshots take at least 1 / 6 second on Chromium OS X and Chromium Windows . See https : //crbug.com/741689 for
* discussion .
2020-12-27 00:52:05 +03:00
* @param options
* /
screenshot ( options ? : {
/ * *
* An object which specifies clipping of the resulting image . Should have the following fields :
* /
clip ? : {
/ * *
* x - coordinate of top - left corner of clip area
* /
x : number ;
/ * *
* y - coordinate of top - left corner of clip area
* /
y : number ;
/ * *
* width of clipping area
* /
width : number ;
/ * *
* height of clipping area
* /
height : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* When true , takes a screenshot of the full scrollable page , instead of the currently visible viewport . Defaults to
* ` false ` .
2020-12-27 00:52:05 +03:00
* /
fullPage? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Hides default white background and allows capturing screenshots with transparency . Not applicable to ` jpeg ` images .
* Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
omitBackground? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* The file path to save the image to . The screenshot type will be inferred from file extension . If ` path ` is a relative
* path , then it is resolved relative to the current working directory . If no path is provided , the image won ' t be saved to
* the disk .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
* The quality of the image , between 0 - 100 . Not applicable to ` png ` images .
* /
quality? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
* Specify screenshot type , defaults to ` png ` .
* /
2020-12-28 18:03:09 +03:00
type ? : "png" | "jpeg" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < Buffer > ;
/ * *
* Returns the array of option values that have been successfully selected .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* 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 .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // single selection matching the value
* page . selectOption ( 'select#colors' , 'blue' ) ;
*
* // single selection matching both the value and the label
* page . selectOption ( 'select#colors' , { label : 'Blue' } ) ;
*
* // multiple selection
* page . selectOption ( 'select#colors' , [ 'red' , 'green' , 'blue' ] ) ;
*
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . selectOption ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frameselectoption)
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-29 23:12:46 +03:00
* @param values Options to select . If the ` <select> ` has the ` multiple ` attribute , all matching options are selected , otherwise only the first option matching one of the passed options is selected . String values are equivalent to ` {value:'string'} ` . Option
* is considered matching if all specified properties match .
2020-12-27 00:52:05 +03:00
* @param options
* /
selectOption ( selector : string , values : null | string | ElementHandle | Array < string > | {
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.value ` . Optional .
2020-12-27 00:52:05 +03:00
* /
value? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.label ` . Optional .
2020-12-27 00:52:05 +03:00
* /
label? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by the index . Optional .
2020-12-27 00:52:05 +03:00
* /
index? : number ;
} | Array < ElementHandle > | Array < {
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.value ` . Optional .
2020-12-27 00:52:05 +03:00
* /
value? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.label ` . Optional .
2020-12-27 00:52:05 +03:00
* /
label? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by the index . Optional .
2020-12-27 00:52:05 +03:00
* /
index? : number ;
} > , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < Array < string > > ;
/ * *
* @param html HTML markup to assign to the page .
* @param options
* /
setContent ( html : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
waitUntil ? : "load" | "domcontentloaded" | "networkidle" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < void > ;
/ * *
* This setting will change the default maximum navigation time for the following methods and related shortcuts :
2021-01-07 07:02:51 +03:00
* - [ page . goBack ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagegoback)
* - [ page . goForward ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagegoforward)
* - [ page . goto ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagegoto)
* - [ page . reload ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagereload)
* - [ page . setContent ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetcontent)
* - [ page . waitForNavigation ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitfornavigation)
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * *
2021-01-07 07:02:51 +03:00
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
2020-12-29 23:12:46 +03:00
* takes priority over
2021-01-07 07:02:51 +03:00
* [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* and
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout).
2020-12-27 00:52:05 +03:00
* @param timeout Maximum navigation time in milliseconds
* /
setDefaultNavigationTimeout ( timeout : number ) : void ;
/ * *
* This setting will change the default maximum time for all the methods accepting ` timeout ` option .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * *
2021-01-07 07:02:51 +03:00
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
2020-12-29 23:12:46 +03:00
* takes priority over
2021-01-07 07:02:51 +03:00
* [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout).
2020-12-27 00:52:05 +03:00
* @param timeout Maximum time in milliseconds
* /
setDefaultTimeout ( timeout : number ) : void ;
/ * *
* The extra HTTP headers will be sent with every request the page initiates .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * page . setExtraHTTPHeaders does not guarantee the order of headers in the outgoing requests .
2020-12-27 00:52:05 +03:00
* @param headers An object containing additional HTTP headers to be sent with every request . All header values must be strings .
* /
setExtraHTTPHeaders ( headers : { [ key : string ] : string ; } ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method expects ` selector ` to point to an
* [ input element ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Sets the value of the file input to these file paths or files . If some of the ` filePaths ` are relative paths , then they
* are resolved relative to the the current working directory . For empty array , clears the selected files .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param files
* @param options
* /
setInputFiles ( selector : string , files : string | Array < string > | {
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] name * * required * *
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] type * * required * *
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
* File content * * required * *
* /
buffer : Buffer ;
} | Array < {
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] name * * required * *
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] type * * required * *
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
* File content * * required * *
* /
buffer : Buffer ;
} > , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* In the case of multiple pages in a single browser , each page can have its own viewport size . However ,
2021-01-07 07:02:51 +03:00
* [ browser . newContext ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsernewcontext) allows to set
* viewport size ( and more ) for all pages in the context at once .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` page.setViewportSize ` will resize the page . A lot of websites don ' t expect phones to change size , so you should set the
* viewport size before navigating to the page .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . setViewportSize ( {
* width : 640 ,
* height : 480 ,
* } ) ;
* await page . goto ( 'https://example.com' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param viewportSize
* /
setViewportSize ( viewportSize : {
/ * *
* page width in pixels . * * required * *
* /
width : number ;
/ * *
* page height in pixels . * * required * *
* /
height : number ;
} ) : Promise < void > ;
/ * *
* This method taps an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . touchscreen ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagetouchscreen) to tap the
2020-12-29 23:12:46 +03:00
* center of the element , or the specified ` position ` .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * ` page.tap() ` requires that the ` hasTouch ` option of the browser context be set to true .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . tap ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frametap).
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
tap ( selector : string , options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns ` element.textContent ` .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
textContent ( selector : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns the page 's title. Shortcut for main frame' s
2021-01-07 07:02:51 +03:00
* [ frame . title ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frametitle).
2020-12-27 00:52:05 +03:00
* /
title ( ) : Promise < string > ;
touchscreen : Touchscreen ;
/ * *
2020-12-29 23:12:46 +03:00
* Sends a ` keydown ` , ` keypress ` / ` input ` , and ` keyup ` event for each character in the text . ` page.type ` can be used to send
* fine - grained keyboard events . To fill values in form fields , use
2021-01-07 07:02:51 +03:00
* [ page . fill ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagefill).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* To press a special key , like ` Control ` or ` ArrowDown ` , use
2021-01-07 07:02:51 +03:00
* [ keyboard . press ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardpress).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . type ( '#mytextarea' , 'Hello' ) ; // Types instantly
* await page . type ( '#mytextarea' , 'World' , { delay : 100 } ) ; // Types slower, like a user
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . type ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frametype).
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param text A text to type into a focused element .
* @param options
* /
type ( selector : string , text : string , options ? : {
/ * *
* Time to wait between key presses in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method unchecks an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method rejects . If the element is already
* unchecked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to click in the center
2020-12-29 23:12:46 +03:00
* of the element .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now unchecked . If not , this method rejects .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . uncheck ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frameuncheck).
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
uncheck ( selector : string , options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2021-01-07 07:02:51 +03:00
* Removes a route created with [ page . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageroute).
* When ` handler ` is not specified , removes all routes for the ` url ` .
2020-12-28 18:03:09 +03:00
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] to match while routing .
2020-12-27 00:52:05 +03:00
* @param handler Optional handler function to route the request .
* /
unroute ( url : string | RegExp | ( ( url : URL ) = > boolean ) , handler ? : ( ( route : Route , request : Request ) = > void ) ) : Promise < void > ;
/ * *
2021-01-07 07:02:51 +03:00
* Shortcut for main frame ' s [ frame . url ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frameurl).
2020-12-27 00:52:05 +03:00
* /
url ( ) : string ;
/ * *
* Video object associated with this page .
* /
video ( ) : null | Video ;
viewportSize ( ) : null | {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
/ * *
* Emitted when the page closes .
* /
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( ) = > boolean , timeout? : number } | ( ( ) = > boolean ) ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when JavaScript within the page calls one of console API methods , e . g . ` console.log ` or ` console.dir ` . Also
* emitted if the page throws an error or a warning .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The arguments passed into ` console.log ` appear as arguments on the event handler .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of handling ` console ` event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'console' , msg = > {
* for ( let i = 0 ; i < msg . args ( ) . length ; ++ i )
* console . log ( ` ${ i } : ${ msg . args ( ) [ i ] } ` ) ;
* } ) ;
* page . evaluate ( ( ) = > console . log ( 'hello' , 5 , { foo : 'bar' } ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'console' , optionsOrPredicate ? : { predicate ? : ( consoleMessage : ConsoleMessage ) = > boolean , timeout? : number } | ( ( consoleMessage : ConsoleMessage ) = > boolean ) ) : Promise < ConsoleMessage > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page crashes . Browser pages might crash if they try to allocate too much memory . When the page crashes ,
* ongoing and subsequent operations will throw .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The most common way to deal with crashes is to catch an exception :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* try {
* // Crash might happen during a click.
* await page . click ( 'button' ) ;
* // Or while waiting for an event.
* await page . waitForEvent ( 'popup' ) ;
* } catch ( e ) {
* // When the page crashes, exception message contains 'crash'.
* }
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* However , when manually listening to events , it might be useful to avoid stalling when the page crashes . In this case ,
* handling ` crash ` event helps :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await new Promise ( ( resolve , reject ) = > {
* page . on ( 'requestfinished' , async request = > {
* if ( await someProcessing ( request ) )
* resolve ( request ) ;
* } ) ;
* page . on ( 'crash' , error = > reject ( error ) ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'crash' , optionsOrPredicate ? : { predicate ? : ( ) = > boolean , timeout? : number } | ( ( ) = > boolean ) ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Playwright can respond
2021-01-07 07:02:51 +03:00
* to the dialog via [ dialog . accept ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogaccept) or
* [ dialog . dismiss ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#dialogdismiss) methods.
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'dialog' , optionsOrPredicate ? : { predicate ? : ( dialog : Dialog ) = > boolean , timeout? : number } | ( ( dialog : Dialog ) = > boolean ) ) : Promise < Dialog > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the JavaScript [ ` DOMContentLoaded ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded)
* event is dispatched .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'domcontentloaded' , optionsOrPredicate ? : { predicate ? : ( ) = > boolean , timeout? : number } | ( ( ) = > boolean ) ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when attachment download started . User can access basic file operations on downloaded content via the passed
* [ Download ] instance .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Browser context * * must * * be created with the ` acceptDownloads ` set to ` true ` when user needs access to the
* downloaded content . If ` acceptDownloads ` is not set or set to ` false ` , download events are emitted , but the actual
* download is not performed and user has no access to the downloaded files .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'download' , optionsOrPredicate ? : { predicate ? : ( download : Download ) = > boolean , timeout? : number } | ( ( download : Download ) = > boolean ) ) : Promise < Download > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a file chooser is supposed to appear , such as after clicking the ` <input type=file> ` . Playwright can
* respond to it via setting the input files using
2021-01-07 07:02:51 +03:00
* [ fileChooser . setFiles ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#filechoosersetfiles) that can
* be uploaded after that .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'filechooser' , optionsOrPredicate ? : { predicate ? : ( fileChooser : FileChooser ) = > boolean , timeout? : number } | ( ( fileChooser : FileChooser ) = > boolean ) ) : Promise < FileChooser > ;
/ * *
* Emitted when a frame is attached .
* /
waitForEvent ( event : 'frameattached' , optionsOrPredicate ? : { predicate ? : ( frame : Frame ) = > boolean , timeout? : number } | ( ( frame : Frame ) = > boolean ) ) : Promise < Frame > ;
/ * *
* Emitted when a frame is detached .
* /
waitForEvent ( event : 'framedetached' , optionsOrPredicate ? : { predicate ? : ( frame : Frame ) = > boolean , timeout? : number } | ( ( frame : Frame ) = > boolean ) ) : Promise < Frame > ;
/ * *
* Emitted when a frame is navigated to a new url .
* /
waitForEvent ( event : 'framenavigated' , optionsOrPredicate ? : { predicate ? : ( frame : Frame ) = > boolean , timeout? : number } | ( ( frame : Frame ) = > boolean ) ) : Promise < Frame > ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when the JavaScript [ ` load ` ] ( https : //developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'load' , optionsOrPredicate ? : { predicate ? : ( ) = > boolean , timeout? : number } | ( ( ) = > boolean ) ) : Promise < void > ;
/ * *
* Emitted when an uncaught exception happens within the page .
* /
waitForEvent ( event : 'pageerror' , optionsOrPredicate ? : { predicate ? : ( error : Error ) = > boolean , timeout? : number } | ( ( error : Error ) = > boolean ) ) : Promise < Error > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when the page opens a new tab or window . This event is emitted in addition to the
2020-12-31 05:04:51 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextonpage), but
2020-12-29 23:12:46 +03:00
* only for popups relevant to this page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ popup ] = await Promise . all ( [
* page . waitForEvent ( 'popup' ) ,
* page . evaluate ( ( ) = > window . open ( 'https://example.com' ) ) ,
* ] ) ;
* console . log ( await popup . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'popup' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean , timeout? : number } | ( ( page : Page ) = > boolean ) ) : Promise < Page > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a page issues a request . The [ request ] object is read - only . In order to intercept and mutate requests , see
2021-01-07 07:02:51 +03:00
* [ page . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageroute) or
* [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute).
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'request' , optionsOrPredicate ? : { predicate ? : ( request : Request ) = > boolean , timeout? : number } | ( ( request : Request ) = > boolean ) ) : Promise < Request > ;
/ * *
* Emitted when a request fails , for example by timing out .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request
* will complete with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfinished' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfinished)
2020-12-29 23:12:46 +03:00
* event and not with
2020-12-31 05:04:51 +03:00
* [ page . on ( 'requestfailed' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfailed).
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'requestfailed' , optionsOrPredicate ? : { predicate ? : ( request : Request ) = > boolean , timeout? : number } | ( ( request : Request ) = > boolean ) ) : Promise < Request > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a request finishes successfully after downloading the response body . For a successful response , the
* sequence of events is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'requestfinished' , optionsOrPredicate ? : { predicate ? : ( request : Request ) = > boolean , timeout? : number } | ( ( request : Request ) = > boolean ) ) : Promise < Request > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when [ response ] status and headers are received for a request . For a successful response , the sequence of events
* is ` request ` , ` response ` and ` requestfinished ` .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'response' , optionsOrPredicate ? : { predicate ? : ( response : Response ) = > boolean , timeout? : number } | ( ( response : Response ) = > boolean ) ) : Promise < Response > ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when < [ WebSocket ] > request is sent .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'websocket' , optionsOrPredicate ? : { predicate ? : ( webSocket : WebSocket ) = > boolean , timeout? : number } | ( ( webSocket : WebSocket ) = > boolean ) ) : Promise < WebSocket > ;
/ * *
2020-12-29 23:12:46 +03:00
* Emitted when a dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned by the
* page .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'worker' , optionsOrPredicate ? : { predicate ? : ( worker : Worker ) = > boolean , timeout? : number } | ( ( worker : Worker ) = > boolean ) ) : Promise < Worker > ;
/ * *
* Returns when the required load state has been reached .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* This resolves when the page reaches a required load state , ` load ` by default . The navigation must have been committed
* when this method is called . If current document has already reached the required state , resolves immediately .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . click ( 'button' ) ; // Click triggers navigation.
* await page . waitForLoadState ( ) ; // The promise resolves after 'load' event.
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ popup ] = await Promise . all ( [
* page . waitForEvent ( 'popup' ) ,
* page . click ( 'button' ) , // Click triggers a popup.
* ] )
* await popup . waitForLoadState ( 'domcontentloaded' ) ; // The promise resolves after 'domcontentloaded' event.
* console . log ( await popup . title ( ) ) ; // Popup is ready to use.
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framewaitforloadstate).
2020-12-29 23:12:46 +03:00
* @param state Optional load state to wait for , defaults to ` load ` . If the state has been already reached while loading current document , the method resolves immediately . Can be one of :
* - ` 'load' ` - wait for the ` load ` event to be fired .
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - wait for the ` DOMContentLoaded ` event to be fired .
* - ` 'networkidle' ` - wait until there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* @param options
* /
2020-12-28 18:03:09 +03:00
waitForLoadState ( state ? : "load" | "domcontentloaded" | "networkidle" , options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect . In case of navigation to a different anchor or navigation due to History API usage , the navigation will
* resolve with ` null ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* This resolves when the page navigates to a new URL or reloads . It is useful for when you run code which will indirectly
* cause the page to navigate . e . g . The click target has an ` onclick ` handler that triggers navigation from a ` setTimeout ` .
* Consider this example :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ response ] = await Promise . all ( [
* page . waitForNavigation ( ) , // The promise resolves after navigation has finished
* page . click ( 'a.delayed-navigation' ) , // Clicking the link will indirectly cause a navigation
* ] ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* * * NOTE * * Usage of the [ History API ] ( https : //developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL is
* considered a navigation .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . waitForNavigation ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framewaitfornavigation).
2020-12-27 00:52:05 +03:00
* @param options
* /
waitForNavigation ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
2020-12-28 18:03:09 +03:00
* A glob pattern , regex pattern or predicate receiving [ URL ] to match while waiting for the navigation .
2020-12-27 00:52:05 +03:00
* /
2021-01-05 00:50:29 +03:00
url? : string | RegExp | ( ( url : URL ) = > boolean ) ;
2020-12-27 00:52:05 +03:00
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
waitUntil ? : "load" | "domcontentloaded" | "networkidle" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < null | Response > ;
/ * *
* Waits for the matching request and returns it .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const firstRequest = await page . waitForRequest ( 'http://example.com/resource' ) ;
* const finalRequest = await page . waitForRequest ( request = > request . url ( ) === 'http://example.com' && request . method ( ) === 'GET' ) ;
* return firstRequest . url ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . waitForRequest ( request = > request . url ( ) . searchParams . get ( 'foo' ) === 'bar' && request . url ( ) . searchParams . get ( 'foo2' ) === 'bar2' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
* @param urlOrPredicate Request URL string , regex or predicate receiving [ Request ] object .
2020-12-27 00:52:05 +03:00
* @param options
* /
2021-01-05 00:50:29 +03:00
waitForRequest ( urlOrPredicate : string | RegExp | ( ( request : Request ) = > boolean ) , options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* Maximum wait time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable the timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* method .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < Request > ;
/ * *
* Returns the matched response .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const firstResponse = await page . waitForResponse ( 'https://example.com/resource' ) ;
* const finalResponse = await page . waitForResponse ( response = > response . url ( ) === 'https://example.com' && response . status ( ) === 200 ) ;
* return finalResponse . ok ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
* @param urlOrPredicate Request URL string , regex or predicate receiving [ Response ] object .
2020-12-27 00:52:05 +03:00
* @param options
* /
waitForResponse ( urlOrPredicate : string | RegExp | ( ( response : Response ) = > boolean ) , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum wait time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable the timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < Response > ;
/ * *
* Waits for the given ` timeout ` in milliseconds .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Note that ` page.waitForTimeout() ` should only be used for debugging . Tests using the timer in production are going to be
* flaky . Use signals such as network events , selectors becoming visible and others instead .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // wait for 1 second
* await page . waitForTimeout ( 1000 ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcut for main frame ' s
2021-01-07 07:02:51 +03:00
* [ frame . waitForTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framewaitfortimeout).
2020-12-27 00:52:05 +03:00
* @param timeout A timeout to wait for
* /
waitForTimeout ( timeout : number ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method returns all of the dedicated [ WebWorkers ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API)
* associated with the page .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * This does not contain ServiceWorkers
2020-12-27 00:52:05 +03:00
* /
workers ( ) : Array < Worker > ; }
/ * *
2020-12-29 23:12:46 +03:00
* At every point of time , page exposes its current frame tree via the
2021-01-07 07:02:51 +03:00
* [ page . mainFrame ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemainframe) and
* [ frame . childFrames ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framechildframes) methods.
2020-12-28 18:03:09 +03:00
*
* [ Frame ] object ' s lifecycle is controlled by three events , dispatched on the page object :
2020-12-31 05:04:51 +03:00
* - [ page . on ( 'frameattached' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonframeattached) -
2020-12-29 23:12:46 +03:00
* fired when the frame gets attached to the page . A Frame can be attached to the page only once .
2020-12-31 05:04:51 +03:00
* - [ page . on ( 'framenavigated' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonframenavigated) -
2020-12-29 23:12:46 +03:00
* fired when the frame commits navigation to a different URL .
2020-12-31 05:04:51 +03:00
* - [ page . on ( 'framedetached' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonframedetached) -
2020-12-29 23:12:46 +03:00
* fired when the frame gets detached from the page . A Frame can be detached from the page only once .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of dumping frame tree :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { firefox } = require ( 'playwright' ) ; // Or 'chromium' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await firefox . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://www.google.com/chrome/browser/canary.html' ) ;
* dumpFrameTree ( page . mainFrame ( ) , '' ) ;
* await browser . close ( ) ;
*
* function dumpFrameTree ( frame , indent ) {
* console . log ( indent + frame . url ( ) ) ;
* for ( const child of frame . childFrames ( ) ) {
* dumpFrameTree ( child , indent + ' ' ) ;
* }
* }
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of getting text from an iframe element :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const frame = page . frames ( ) . find ( frame = > frame . name ( ) === 'myframe' ) ;
* const text = await frame . $eval ( '.selector' , element = > element . textContent ) ;
* console . log ( text ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface Frame {
/ * *
* Returns the return value of ` pageFunction `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function passed to the ` frame.evaluate ` returns a [ Promise ] , then ` frame.evaluate ` would wait for the promise to
* resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function passed to the ` frame.evaluate ` returns a non - [ Serializable ] value , then ` frame.evaluate ` returns
* ` undefined ` . DevTools Protocol also supports transferring some additional values that are not serializable by ` JSON ` :
* ` -0 ` , ` NaN ` , ` Infinity ` , ` -Infinity ` , and bigint literals .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const result = await frame . evaluate ( ( [ x , y ] ) = > {
* return Promise . resolve ( x * y ) ;
* } , [ 7 , 8 ] ) ;
* console . log ( result ) ; // prints "56"
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* A string can also be passed in instead of a function .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* console . log ( await frame . evaluate ( '1 + 2' ) ) ; // prints "3"
* ` ` `
2020-12-28 18:03:09 +03:00
*
* [ ElementHandle ] instances can be passed as an argument to the ` frame.evaluate ` :
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const bodyHandle = await frame . $ ( 'body' ) ;
* const html = await frame . evaluate ( ( [ body , suffix ] ) = > body . innerHTML + suffix , [ bodyHandle , 'hello' ] ) ;
* await bodyHandle . dispose ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* /
evaluate < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < R > ;
evaluate < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` as in - page object ( JSHandle ) .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The only difference between ` frame.evaluate ` and ` frame.evaluateHandle ` is that ` frame.evaluateHandle ` returns in - page
* object ( JSHandle ) .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function , passed to the ` frame.evaluateHandle ` , returns a [ Promise ] , then ` frame.evaluateHandle ` would wait for
* the promise to resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const aWindowHandle = await frame . evaluateHandle ( ( ) = > Promise . resolve ( window ) ) ;
* aWindowHandle ; // Handle for the window object.
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* A string can also be passed in instead of a function .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const aHandle = await frame . evaluateHandle ( 'document' ) ; // Handle for the 'document'.
* ` ` `
2020-12-28 18:03:09 +03:00
*
* [ JSHandle ] instances can be passed as an argument to the ` frame.evaluateHandle ` :
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const aHandle = await frame . evaluateHandle ( ( ) = > document . body ) ;
* const resultHandle = await frame . evaluateHandle ( ( [ body , suffix ] ) = > body . innerHTML + suffix , [ aHandle , 'hello' ] ) ;
* console . log ( await resultHandle . jsonValue ( ) ) ;
* await resultHandle . dispose ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in the page context
* @param arg Optional argument to pass to ` pageFunction `
* /
evaluateHandle < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
evaluateHandle < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
* Returns the ElementHandle pointing to the frame element .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The method finds an element matching the specified selector within the frame . See
2021-01-02 02:17:27 +03:00
* [ Working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details. If no elements match the selector,
* returns ` null ` .
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* /
$ < K extends keyof HTMLElementTagNameMap > ( selector : K ) : Promise < ElementHandleForTag < K > | null > ;
$ ( selector : string ) : Promise < ElementHandle < SVGElement | HTMLElement > | null > ;
/ * *
* Returns the ElementHandles pointing to the frame elements .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The method finds all elements matching the specified selector within the frame . See
2021-01-02 02:17:27 +03:00
* [ Working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details. If no elements match the selector,
* returns empty array .
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* /
$ $ < K extends keyof HTMLElementTagNameMap > ( selector : K ) : Promise < ElementHandleForTag < K > [ ] > ;
$ $ ( selector : string ) : Promise < ElementHandle < SVGElement | HTMLElement > [ ] > ;
/ * *
* Returns the return value of ` pageFunction `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The method finds an element matching the specified selector within the frame and passes it as a first argument to
2021-01-02 02:17:27 +03:00
* ` pageFunction ` . See [ Working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details. If no elements
* match the selector , the method throws an error .
2020-12-28 18:03:09 +03:00
*
* If ` pageFunction ` returns a [ Promise ] , then ` frame. $ eval ` would wait for the promise to resolve and return its value .
*
2020-12-27 00:52:05 +03:00
* Examples :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const searchValue = await frame . $eval ( '#search' , el = > el . value ) ;
* const preloadHref = await frame . $eval ( 'link[rel=preload]' , el = > el . href ) ;
* const html = await frame . $eval ( '.main-container' , ( e , suffix ) = > e . outerHTML + suffix , 'hello' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* /
$eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , Arg , R > , arg : Arg ) : Promise < R > ;
$eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , Arg , R > , arg : Arg ) : Promise < R > ;
$eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , void , R > , arg? : any ) : Promise < R > ;
$eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The method finds all elements matching the specified selector within the frame and passes an array of matched elements
2021-01-02 02:17:27 +03:00
* as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more
* details .
2020-12-28 18:03:09 +03:00
*
* If ` pageFunction ` returns a [ Promise ] , then ` frame. $ $ eval ` would wait for the promise to resolve and return its value .
*
2020-12-27 00:52:05 +03:00
* Examples :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const divsCounts = await frame . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* /
$ $eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
$ $eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
$ $eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , void , R > , arg? : any ) : Promise < R > ;
$ $eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns when the ` pageFunction ` returns a truthy value , returns that value .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* The ` waitForFunction ` can be used to observe viewport size change :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { firefox } = require ( 'playwright' ) ; // Or 'chromium' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await firefox . launch ( ) ;
* const page = await browser . newPage ( ) ;
* const watchDog = page . mainFrame ( ) . waitForFunction ( 'window.innerWidth < 100' ) ;
* page . setViewportSize ( { width : 50 , height : 50 } ) ;
* await watchDog ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* To pass an argument to the predicate of ` frame.waitForFunction ` function :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const selector = '.foo' ;
* await frame . waitForFunction ( selector = > ! ! document . querySelector ( selector ) , selector ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* @param options
* /
waitForFunction < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg , options? : PageWaitForFunctionOptions ) : Promise < SmartHandle < R > > ;
waitForFunction < R > ( pageFunction : PageFunction < void , R > , arg? : any , options? : PageWaitForFunctionOptions ) : Promise < SmartHandle < R > > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns when element specified by selector satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Wait for the ` selector ` to satisfy ` state ` option ( either appear / disappear from dom , or become visible / hidden ) . If at
* the moment of calling the method ` selector ` already satisfies the condition , the method will return immediately . If the
* selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will throw .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* This method works across navigations :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( ) ;
* const page = await browser . newPage ( ) ;
* let currentURL ;
* page . mainFrame ( )
* . waitForSelector ( 'img' )
* . then ( ( ) = > console . log ( 'First URL with image: ' + currentURL ) ) ;
* for ( currentURL of [ 'https://example.com' , 'https://google.com' , 'https://bbc.com' ] ) {
* await page . goto ( currentURL ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options? : PageWaitForSelectorOptionsNotHidden ) : Promise < ElementHandleForTag < K > > ;
waitForSelector ( selector : string , options? : PageWaitForSelectorOptionsNotHidden ) : Promise < ElementHandle < SVGElement | HTMLElement > > ;
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options : PageWaitForSelectorOptions ) : Promise < ElementHandleForTag < K > | null > ;
waitForSelector ( selector : string , options : PageWaitForSelectorOptions ) : Promise < null | ElementHandle < SVGElement | HTMLElement > > ;
/ * *
* Returns the added tag when the script ' s onload fires or when the script content was injected into frame .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Adds a ` <script> ` tag into the page with the desired url or content .
* @param params
* /
addScriptTag ( params : {
/ * *
2020-12-28 18:03:09 +03:00
* URL of a script to be added . Optional .
2020-12-27 00:52:05 +03:00
* /
url? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Path to the JavaScript file to be injected into frame . If ` path ` is a relative path , then it is resolved relative to the
* current working directory . Optional .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Raw JavaScript content to be injected into frame . Optional .
2020-12-27 00:52:05 +03:00
* /
content? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Script type . Use 'module' in order to load a Javascript ES6 module . See
* [ script ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/script) for more details. Optional.
2020-12-27 00:52:05 +03:00
* /
type ? : string ;
} ) : Promise < ElementHandle > ;
/ * *
* Returns the added tag when the stylesheet ' s onload fires or when the CSS content was injected into frame .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Adds a ` <link rel="stylesheet"> ` tag into the page with the desired url or a ` <style type="text/css"> ` tag with the
* content .
2020-12-27 00:52:05 +03:00
* @param params
* /
addStyleTag ( params : {
/ * *
2020-12-28 18:03:09 +03:00
* URL of the ` <link> ` tag . Optional .
2020-12-27 00:52:05 +03:00
* /
url? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Path to the CSS file to be injected into frame . If ` path ` is a relative path , then it is resolved relative to the
* current working directory . Optional .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Raw CSS content to be injected into frame . Optional .
2020-12-27 00:52:05 +03:00
* /
content? : string ;
} ) : Promise < ElementHandle > ;
/ * *
* This method checks an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method rejects . If the element is already
* checked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to click in the center
2020-12-29 23:12:46 +03:00
* of the element .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked . If not , this method rejects .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
check ( selector : string , options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
childFrames ( ) : Array < Frame > ;
/ * *
* This method clicks an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to click in the center
2020-12-29 23:12:46 +03:00
* of the element , or the specified ` position ` .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
click ( selector : string , options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-28 18:03:09 +03:00
* defaults to 1 . See [ UIEvent . detail ] .
2020-12-27 00:52:05 +03:00
* /
clickCount? : number ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Gets the full HTML contents of the frame , including the doctype .
* /
content ( ) : Promise < string > ;
/ * *
* This method double clicks an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to double click in the
2020-12-29 23:12:46 +03:00
* center of the element , or the specified ` position ` .
2020-12-31 05:04:51 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set . Note that if the
* first click of the ` dblclick() ` triggers a navigation event , this method will reject .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * ` frame.dblclick() ` dispatches two ` click ` events and a single ` dblclick ` event .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
dblclick ( selector : string , options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* The snippet below dispatches the ` click ` event on the element . Regardless of the visibility state of the elment , ` click `
* is dispatched . This is equivalend to calling
* [ element . click ( ) ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await frame . dispatchEvent ( 'button#submit' , 'click' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Under the hood , it creates an instance of an event based on the given ` type ` , initializes it with ` eventInit ` properties
* and dispatches it on the element . Events are ` composed ` , ` cancelable ` and bubble by default .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Since ` eventInit ` is event - specific , please refer to the events documentation for the lists of initial properties :
2020-12-28 18:03:09 +03:00
* - [ DragEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
* - [ FocusEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
* - [ KeyboardEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
* - [ MouseEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
* - [ PointerEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
* - [ TouchEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
* - [ Event ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Event/Event)
*
2020-12-27 00:52:05 +03:00
* You can also specify ` JSHandle ` as the property value if you want live objects to be passed into the event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // Note you can only create DataTransfer in Chromium and Firefox
* const dataTransfer = await frame . evaluateHandle ( ( ) = > new DataTransfer ( ) ) ;
* await frame . dispatchEvent ( '#source' , 'dragstart' , { dataTransfer } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param type DOM event type : ` "click" ` , ` "dragstart" ` , etc .
* @param eventInit Optional event - specific initialization properties .
* @param options
* /
dispatchEvent ( selector : string , type : string , eventInit? : EvaluationArgument , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method waits for an element matching ` selector ` , waits for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks, focuses the
* element , fills it and triggers an ` input ` event after filling . If the element matching ` selector ` is not an ` <input> ` ,
* ` <textarea> ` or ` [contenteditable] ` element , this method throws an error . Note that you can pass an empty string to
* clear the input field .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* To send fine - grained keyboard events , use
2021-01-07 07:02:51 +03:00
* [ frame . type ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#frametype).
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param value Value to fill for the ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element .
* @param options
* /
fill ( selector : string , value : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method fetches an element with ` selector ` and focuses it . If there ' s no element matching ` selector ` , the method
* waits until a matching element appears in the DOM .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
focus ( selector : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns the ` frame ` or ` iframe ` element handle which corresponds to this frame .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* This is an inverse of
2021-01-07 07:02:51 +03:00
* [ elementHandle . contentFrame ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#elementhandlecontentframe).
2020-12-29 23:12:46 +03:00
* Note that returned handle actually belongs to the parent frame .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* This method throws an error if the frame has been detached before ` frameElement() ` returns .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const frameElement = await frame . frameElement ( ) ;
* const contentFrame = await frameElement . contentFrame ( ) ;
* console . log ( frame === contentFrame ) ; // -> true
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
frameElement ( ) : Promise < ElementHandle > ;
/ * *
* Returns element attribute value .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param name Attribute name to get the value for .
* @param options
* /
getAttribute ( selector : string , name : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` frame.goto ` will throw an error if :
2020-12-27 01:31:41 +03:00
* - there ' s an SSL error ( e . g . in case of self - signed certificates ) .
* - target URL is invalid .
* - the ` timeout ` is exceeded during navigation .
* - the remote server does not respond or is unreachable .
* - the main resource failed to load .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* ` frame.goto ` will not throw an error when any valid HTTP status code is returned by the remote server , including 404
* "Not Found" and 500 "Internal Server Error" . The status code for such responses can be retrieved by calling
2021-01-07 07:02:51 +03:00
* [ response . status ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#responsestatus).
2020-12-27 01:31:41 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * ` frame.goto ` either throws an error or returns a main resource response . The only exceptions are navigation
* to ` about:blank ` or navigation to the same URL with a different hash , which would succeed and return ` null ` .
* > * * NOTE * * Headless mode doesn ' t support navigation to a PDF document . See the
* [ upstream issue ] ( https : //bugs.chromium.org/p/chromium/issues/detail?id=761295).
2020-12-27 00:52:05 +03:00
* @param url URL to navigate frame to . The url should include scheme , e . g . ` https:// ` .
* @param options
* /
goto ( url : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Referer header value . If provided it will take preference over the referer header value set by
2021-01-07 07:02:51 +03:00
* [ page . setExtraHTTPHeaders ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetextrahttpheaders).
2020-12-27 00:52:05 +03:00
* /
referer? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
waitUntil ? : "load" | "domcontentloaded" | "networkidle" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < null | Response > ;
/ * *
* This method hovers over an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to hover over the
2020-12-29 23:12:46 +03:00
* center of the element , or the specified ` position ` .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
hover ( selector : string , options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns ` element.innerHTML ` .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
innerHTML ( selector : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns ` element.innerText ` .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
innerText ( selector : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns ` true ` if the frame has been detached , or ` false ` otherwise .
* /
isDetached ( ) : boolean ;
/ * *
* Returns frame ' s name attribute as specified in the tag .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* If the name is empty , returns the id attribute instead .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * This value is calculated once when the frame is created , and will not update if the attribute is changed
* later .
2020-12-27 00:52:05 +03:00
* /
name ( ) : string ;
/ * *
* Returns the page containing this frame .
* /
page ( ) : Page ;
/ * *
* Parent frame , if any . Detached frames and main frames return ` null ` .
* /
parentFrame ( ) : null | Frame ;
/ * *
2020-12-29 23:12:46 +03:00
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
2020-12-28 18:03:09 +03:00
*
2020-12-27 01:31:41 +03:00
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcuts such as ` key: "Control+o" ` or ` key: "Control+Shift+T" ` are supported as well . When speficied with the
* modifier , modifier is pressed and being held while the subsequent key is being pressed .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* @param options
* /
press ( selector : string , key : string , options ? : {
/ * *
* Time to wait between ` keydown ` and ` keyup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns the array of option values that have been successfully selected .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* 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 .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // single selection matching the value
* frame . selectOption ( 'select#colors' , 'blue' ) ;
*
* // single selection matching both the value and the label
* frame . selectOption ( 'select#colors' , { label : 'Blue' } ) ;
*
* // multiple selection
* frame . selectOption ( 'select#colors' , 'red' , 'green' , 'blue' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-29 23:12:46 +03:00
* @param values Options to select . If the ` <select> ` has the ` multiple ` attribute , all matching options are selected , otherwise only the first option matching one of the passed options is selected . String values are equivalent to ` {value:'string'} ` . Option
* is considered matching if all specified properties match .
2020-12-27 00:52:05 +03:00
* @param options
* /
selectOption ( selector : string , values : null | string | ElementHandle | Array < string > | {
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.value ` . Optional .
2020-12-27 00:52:05 +03:00
* /
value? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.label ` . Optional .
2020-12-27 00:52:05 +03:00
* /
label? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by the index . Optional .
2020-12-27 00:52:05 +03:00
* /
index? : number ;
} | Array < ElementHandle > | Array < {
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.value ` . Optional .
2020-12-27 00:52:05 +03:00
* /
value? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.label ` . Optional .
2020-12-27 00:52:05 +03:00
* /
label? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by the index . Optional .
2020-12-27 00:52:05 +03:00
* /
index? : number ;
} > , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < Array < string > > ;
/ * *
* @param html HTML markup to assign to the page .
* @param options
* /
setContent ( html : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
waitUntil ? : "load" | "domcontentloaded" | "networkidle" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method expects ` selector ` to point to an
* [ input element ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Sets the value of the file input to these file paths or files . If some of the ` filePaths ` are relative paths , then they
* are resolved relative to the the current working directory . For empty array , clears the selected files .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param files
* @param options
* /
setInputFiles ( selector : string , files : string | Array < string > | {
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] name * * required * *
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] type * * required * *
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
* File content * * required * *
* /
buffer : Buffer ;
} | Array < {
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] name * * required * *
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] type * * required * *
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
* File content * * required * *
* /
buffer : Buffer ;
} > , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method taps an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . touchscreen ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagetouchscreen) to tap the
2020-12-29 23:12:46 +03:00
* center of the element , or the specified ` position ` .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * ` frame.tap() ` requires that the ` hasTouch ` option of the browser context be set to true .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
tap ( selector : string , options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns ` element.textContent ` .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
textContent ( selector : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < null | string > ;
/ * *
* Returns the page title .
* /
title ( ) : Promise < string > ;
/ * *
2020-12-29 23:12:46 +03:00
* Sends a ` keydown ` , ` keypress ` / ` input ` , and ` keyup ` event for each character in the text . ` frame.type ` can be used to
* send fine - grained keyboard events . To fill values in form fields , use
2021-01-07 07:02:51 +03:00
* [ frame . fill ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#framefill).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* To press a special key , like ` Control ` or ` ArrowDown ` , use
2021-01-07 07:02:51 +03:00
* [ keyboard . press ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardpress).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await frame . type ( '#mytextarea' , 'Hello' ) ; // Types instantly
* await frame . type ( '#mytextarea' , 'World' , { delay : 100 } ) ; // Types slower, like a user
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param text A text to type into a focused element .
* @param options
* /
type ( selector : string , text : string , options ? : {
/ * *
* Time to wait between key presses in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method checks an element matching ` selector ` by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Find an element match matching ` selector ` . If there is none , wait until a matching element is attached to the DOM .
2020-12-29 23:12:46 +03:00
* 1 . Ensure that matched element is a checkbox or a radio input . If not , this method rejects . If the element is already
* unchecked , this method returns immediately .
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the matched element, unless `force` option is set. If the
* element is detached during the checks , the whole action is retried .
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to click in the center
2020-12-29 23:12:46 +03:00
* of the element .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now unchecked . If not , this method rejects .
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2021-01-02 02:17:27 +03:00
* @param selector A selector to search for element . If there are multiple elements satisfying the selector , the first will be used . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
uncheck ( selector : string , options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns frame ' s url .
* /
url ( ) : string ;
/ * *
* Waits for the required load state to be reached .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* This returns when the frame reaches a required load state , ` load ` by default . The navigation must have been committed
* when this method is called . If current document has already reached the required state , resolves immediately .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await frame . click ( 'button' ) ; // Click triggers navigation.
* await frame . waitForLoadState ( ) ; // Waits for 'load' state by default.
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* @param state Optional load state to wait for , defaults to ` load ` . If the state has been already reached while loading current document , the method returns immediately . Can be one of :
* - ` 'load' ` - wait for the ` load ` event to be fired .
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - wait for the ` DOMContentLoaded ` event to be fired .
* - ` 'networkidle' ` - wait until there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* @param options
* /
2020-12-28 18:03:09 +03:00
waitForLoadState ( state ? : "load" | "domcontentloaded" | "networkidle" , options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns the main resource response . In case of multiple redirects , the navigation will resolve with the response of the
* last redirect . In case of navigation to a different anchor or navigation due to History API usage , the navigation will
* resolve with ` null ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* This method waits for the frame to navigate to a new URL . It is useful for when you run code which will indirectly cause
* the frame to navigate . Consider this example :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ response ] = await Promise . all ( [
* frame . waitForNavigation ( ) , // Wait for the navigation to finish
* frame . click ( 'a.my-link' ) , // Clicking the link will indirectly cause a navigation
* ] ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* * * NOTE * * Usage of the [ History API ] ( https : //developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL is
* considered a navigation .
2020-12-27 00:52:05 +03:00
* @param options
* /
waitForNavigation ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum operation time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be
* changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout),
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout),
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
2020-12-28 18:03:09 +03:00
* URL string , URL regex pattern or predicate receiving [ URL ] to match while waiting for the navigation .
2020-12-27 00:52:05 +03:00
* /
2021-01-05 00:50:29 +03:00
url? : string | RegExp | ( ( url : URL ) = > boolean ) ;
2020-12-27 00:52:05 +03:00
/ * *
* When to consider operation succeeded , defaults to ` load ` . Events can be either :
2020-12-27 01:31:41 +03:00
* - ` 'domcontentloaded' ` - consider operation to be finished when the ` DOMContentLoaded ` event is fired .
* - ` 'load' ` - consider operation to be finished when the ` load ` event is fired .
* - ` 'networkidle' ` - consider operation to be finished when there are no network connections for at least ` 500 ` ms .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
waitUntil ? : "load" | "domcontentloaded" | "networkidle" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < null | Response > ;
/ * *
* Waits for the given ` timeout ` in milliseconds .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Note that ` frame.waitForTimeout() ` should only be used for debugging . Tests using the timer in production are going to
* be flaky . Use signals such as network events , selectors becoming visible and others instead .
2020-12-27 00:52:05 +03:00
* @param timeout A timeout to wait for
* /
waitForTimeout ( timeout : number ) : Promise < void > ; }
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ EventEmitter ] ( https : //nodejs.org/api/events.html#events_class_eventemitter)
*
2020-12-27 00:52:05 +03:00
* BrowserContexts provide a way to operate multiple independent browser sessions .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If a page opens another page , e . g . with a ` window.open ` call , the popup will belong to the parent page ' s browser
* context .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Playwright allows creation of "incognito" browser contexts with ` browser.newContext() ` method . "Incognito" browser
* contexts don ' t write any browsing data to disk .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // Create a new incognito browser context
* const context = await browser . newContext ( ) ;
* // Create a new page inside context.
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* // Dispose context once it's no longer needed.
* await context . close ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface BrowserContext {
/ * *
2020-12-29 23:12:46 +03:00
* The method adds a function called ` name ` on the ` window ` object of every frame in every page in the context . When
2021-01-05 00:50:29 +03:00
* called , the function executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` . If
* the ` callback ` returns a [ Promise ] , it will be awaited .
2020-12-28 18:03:09 +03:00
*
2021-01-05 00:50:29 +03:00
* The first argument of the ` callback ` function contains information about the caller : ` { browserContext: BrowserContext,
* page : Page , frame : Frame } ` .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* See [ page . exposeBinding ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageexposebinding) for
* page - only version .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of exposing page URL to all frames in all pages in the context :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const context = await browser . newContext ( ) ;
* await context . exposeBinding ( 'pageURL' , ( { page } ) = > page . url ( ) ) ;
* const page = await context . newPage ( ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . pageURL ( ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of passing an element handle :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await context . exposeBinding ( 'clicked' , async ( source , element ) = > {
* console . log ( await element . textContent ( ) ) ;
* } , { handle : true } ) ;
* await page . setContent ( `
* < script >
* document . addEventListener ( 'click' , event = > window . clicked ( event . target ) ) ;
* < / script >
* < div > Click me < / div >
* < div > Or click me < / div >
* ` );
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param name Name of the function on the window object .
2021-01-05 00:50:29 +03:00
* @param callback Callback function that will be called in the Playwright ' s context .
2020-12-27 00:52:05 +03:00
* @param options
* /
exposeBinding ( name : string , playwrightBinding : ( source : BindingSource , arg : JSHandle ) = > any , options : { handle : true } ) : Promise < void > ;
exposeBinding ( name : string , playwrightBinding : ( source : BindingSource , . . . args : any [ ] ) = > any , options ? : { handle? : boolean } ) : Promise < void > ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
on ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
once ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* Adds cookies into this browser context . All pages within this context will have these cookies installed . Cookies can be
* obtained via
2021-01-07 07:02:51 +03:00
* [ browserContext . cookies ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextcookies).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await browserContext . addCookies ( [ cookieObject1 , cookieObject2 ] ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param cookies
* /
addCookies ( cookies : Array < {
/ * *
* * * required * *
* /
name : string ;
/ * *
* * * required * *
* /
value : string ;
/ * *
2020-12-28 18:03:09 +03:00
* either url or domain / path are required . Optional .
2020-12-27 00:52:05 +03:00
* /
url? : string ;
/ * *
2020-12-27 01:31:41 +03:00
* either url or domain / path are required Optional .
2020-12-27 00:52:05 +03:00
* /
domain? : string ;
/ * *
2020-12-27 01:31:41 +03:00
* either url or domain / path are required Optional .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Unix time in seconds . Optional .
2020-12-27 00:52:05 +03:00
* /
expires? : number ;
2020-12-27 01:31:41 +03:00
/ * *
* Optional .
* /
2020-12-27 00:52:05 +03:00
httpOnly? : boolean ;
2020-12-27 01:31:41 +03:00
/ * *
* Optional .
* /
2020-12-27 00:52:05 +03:00
secure? : boolean ;
2020-12-27 01:31:41 +03:00
/ * *
* Optional .
* /
2020-12-28 18:03:09 +03:00
sameSite ? : "Strict" | "Lax" | "None" ;
2020-12-27 00:52:05 +03:00
} > ) : Promise < void > ;
/ * *
* Adds a script which would be evaluated in one of the following scenarios :
2020-12-27 01:31:41 +03:00
* - Whenever a page is created in the browser context or is navigated .
2020-12-29 23:12:46 +03:00
* - Whenever a child frame is attached or navigated in any page in the browser context . In this case , the script is
* evaluated in the context of the newly attached frame .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The script is evaluated after the document was created but before any of its scripts were run . This is useful to amend
* the JavaScript environment , e . g . to seed ` Math.random ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of overriding ` Math.random ` before the page loads :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // preload.js
* Math . random = ( ) = > 42 ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // In your playwright script, assuming the preload.js file is in same directory.
* await browserContext . addInitScript ( {
* path : 'preload.js'
* } ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * The order of evaluation of multiple scripts installed via
2021-01-07 07:02:51 +03:00
* [ browserContext . addInitScript ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextaddinitscript)
* and [ page . addInitScript ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageaddinitscript) is not
* defined .
2020-12-27 00:52:05 +03:00
* @param script Script to be evaluated in all pages in the browser context .
* @param arg Optional argument to pass to ` script ` ( only supported when passing a function ) .
* /
addInitScript ( script : Function | string | {
/ * *
2020-12-29 23:12:46 +03:00
* Path to the JavaScript file . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . Optional .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Raw script content . Optional .
2020-12-27 00:52:05 +03:00
* /
content? : string ;
} , arg? : Serializable ) : Promise < void > ;
/ * *
* Returns the browser instance of the context . If it was launched as a persistent context null gets returned .
* /
browser ( ) : null | Browser ;
/ * *
* Clears context cookies .
* /
clearCookies ( ) : Promise < void > ;
/ * *
* Clears all permission overrides for the browser context .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const context = await browser . newContext ( ) ;
* await context . grantPermissions ( [ 'clipboard-read' ] ) ;
* // do stuff ..
* context . clearPermissions ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
clearPermissions ( ) : Promise < void > ;
/ * *
* Closes the browser context . All the pages that belong to the browser context will be closed .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * the default browser context cannot be closed .
2020-12-27 00:52:05 +03:00
* /
close ( ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* If no URLs are specified , this method returns all cookies . If URLs are specified , only cookies that affect those URLs
* are returned .
2020-12-27 00:52:05 +03:00
* @param urls Optional list of URLs .
* /
cookies ( urls? : string | Array < string > ) : Promise < Array < Cookie > > ;
/ * *
2020-12-29 23:12:46 +03:00
* The method adds a function called ` name ` on the ` window ` object of every frame in every page in the context . When
2021-01-05 00:50:29 +03:00
* called , the function executes ` callback ` and returns a [ Promise ] which resolves to the return value of ` callback ` .
2020-12-28 18:03:09 +03:00
*
2021-01-05 00:50:29 +03:00
* If the ` callback ` returns a [ Promise ] , it will be awaited .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* See [ page . exposeFunction ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageexposefunction) for
* page - only version .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of adding an ` md5 ` function to all pages in the context :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { webkit } = require ( 'playwright' ) ; // Or 'chromium' or 'firefox'.
* const crypto = require ( 'crypto' ) ;
*
* ( async ( ) = > {
* const browser = await webkit . launch ( { headless : false } ) ;
* const context = await browser . newContext ( ) ;
* await context . exposeFunction ( 'md5' , text = > crypto . createHash ( 'md5' ) . update ( text ) . digest ( 'hex' ) ) ;
* const page = await context . newPage ( ) ;
* await page . setContent ( `
* < script >
* async function onClick() {
* document . querySelector ( 'div' ) . textContent = await window . md5 ( 'PLAYWRIGHT' ) ;
* }
* < / script >
* < button onclick = "onClick()" > Click me < / button >
* < div > < / div >
* ` );
* await page . click ( 'button' ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param name Name of the function on the window object .
2021-01-05 00:50:29 +03:00
* @param callback Callback function that will be called in the Playwright ' s context .
2020-12-27 00:52:05 +03:00
* /
2021-01-05 00:50:29 +03:00
exposeFunction ( name : string , callback : Function ) : Promise < void > ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* Grants specified permissions to the browser context . Only grants corresponding permissions to the given origin if
* specified .
2020-12-27 01:31:41 +03:00
* @param permissions A permission or an array of permissions to grant . Permissions can be one of the following values : - ` 'geolocation' `
* - ` 'midi' `
* - ` 'midi-sysex' ` ( system - exclusive midi )
* - ` 'notifications' `
* - ` 'push' `
* - ` 'camera' `
* - ` 'microphone' `
* - ` 'background-sync' `
* - ` 'ambient-light-sensor' `
* - ` 'accelerometer' `
* - ` 'gyroscope' `
* - ` 'magnetometer' `
* - ` 'accessibility-events' `
* - ` 'clipboard-read' `
* - ` 'clipboard-write' `
* - ` 'payment-handler' `
2020-12-27 00:52:05 +03:00
* @param options
* /
grantPermissions ( permissions : Array < string > , options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* The [ origin ] to grant permissions to , e . g . "https://example.com" .
2020-12-27 00:52:05 +03:00
* /
origin? : string ;
} ) : Promise < void > ;
/ * *
* Creates a new page in the browser context .
* /
newPage ( ) : Promise < Page > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns all open pages in the context . Non visible pages , such as ` "background_page" ` , will not be listed here . You can
* find them using
2021-01-07 07:02:51 +03:00
* [ chromiumBrowserContext . backgroundPages ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#chromiumbrowsercontextbackgroundpages).
2020-12-27 00:52:05 +03:00
* /
pages ( ) : Array < Page > ;
/ * *
2020-12-29 23:12:46 +03:00
* Routing provides the capability to modify network requests that are made by any page in the browser context . Once route
* is enabled , every request matching the url pattern will stall unless it ' s continued , fulfilled or aborted .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of a naïve handler that aborts all image requests :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const context = await browser . newContext ( ) ;
* await context . route ( '**\/*.{png,jpg,jpeg}' , route = > route . abort ( ) ) ;
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* or the same snippet using a regex pattern instead :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const context = await browser . newContext ( ) ;
* await context . route ( /(\.png$)|(\.jpg$)/ , route = > route . abort ( ) ) ;
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Page routes ( set up with [ page . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageroute))
* take precedence over browser context routes when request matches both handlers .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Enabling routing disables http cache .
2020-12-28 18:03:09 +03:00
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] to match while routing .
2020-12-27 00:52:05 +03:00
* @param handler handler function to route the request .
* /
route ( url : string | RegExp | ( ( url : URL ) = > boolean ) , handler : ( ( route : Route , request : Request ) = > void ) ) : Promise < void > ;
/ * *
* This setting will change the default maximum navigation time for the following methods and related shortcuts :
2021-01-07 07:02:51 +03:00
* - [ page . goBack ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagegoback)
* - [ page . goForward ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagegoforward)
* - [ page . goto ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagegoto)
* - [ page . reload ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagereload)
* - [ page . setContent ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetcontent)
* - [ page . waitForNavigation ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitfornavigation)
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * *
2021-01-07 07:02:51 +03:00
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout)
* and [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* take priority over
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout).
2020-12-27 00:52:05 +03:00
* @param timeout Maximum navigation time in milliseconds
* /
setDefaultNavigationTimeout ( timeout : number ) : void ;
/ * *
* This setting will change the default maximum time for all the methods accepting ` timeout ` option .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * *
2021-01-07 07:02:51 +03:00
* [ page . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaultnavigationtimeout),
* [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout) and
* [ browserContext . setDefaultNavigationTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaultnavigationtimeout)
2020-12-29 23:12:46 +03:00
* take priority over
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout).
2020-12-27 00:52:05 +03:00
* @param timeout Maximum time in milliseconds
* /
setDefaultTimeout ( timeout : number ) : void ;
/ * *
2020-12-29 23:12:46 +03:00
* The extra HTTP headers will be sent with every request initiated by any page in the context . These headers are merged
* with page - specific extra HTTP headers set with
2021-01-07 07:02:51 +03:00
* [ page . setExtraHTTPHeaders ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetextrahttpheaders).
2020-12-29 23:12:46 +03:00
* If page overrides a particular header , page - specific header value will be used instead of the browser context header
* value .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * ` browserContext.setExtraHTTPHeaders ` does not guarantee the order of headers in the outgoing requests .
2020-12-27 00:52:05 +03:00
* @param headers An object containing additional HTTP headers to be sent with every request . All header values must be strings .
* /
setExtraHTTPHeaders ( headers : { [ key : string ] : string ; } ) : Promise < void > ;
/ * *
* Sets the context ' s geolocation . Passing ` null ` or ` undefined ` emulates position unavailable .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await browserContext . setGeolocation ( { latitude : 59.95 , longitude : 30.31667 } ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Consider using
2021-01-07 07:02:51 +03:00
* [ browserContext . grantPermissions ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextgrantpermissions)
2020-12-29 23:12:46 +03:00
* to grant permissions for the browser context pages to read its geolocation .
2020-12-27 00:52:05 +03:00
* @param geolocation
* /
setGeolocation ( geolocation : null | {
/ * *
* Latitude between - 90 and 90 . * * required * *
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 . * * required * *
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
} ) : Promise < void > ;
/ * *
2020-12-28 18:03:09 +03:00
* Provide credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Browsers may cache credentials after successful authentication . Passing different credentials or passing
* ` null ` to disable authentication will be unreliable . To remove or replace credentials , create a new browser context
* instead .
2020-12-27 00:52:05 +03:00
* @param httpCredentials
* /
setHTTPCredentials ( httpCredentials : null | {
/ * *
* * * required * *
* /
username : string ;
/ * *
* * * required * *
* /
password : string ;
} ) : Promise < void > ;
/ * *
* @param offline Whether to emulate network being offline for the browser context .
* /
setOffline ( offline : boolean ) : Promise < void > ;
/ * *
* Returns storage state for this browser context , contains current cookies and local storage snapshot .
* @param options
* /
storageState ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* The file path to save the storage state to . If ` path ` is a relative path , then it is resolved relative to
* [ current working directory ] ( https : //nodejs.org/api/process.html#process_process_cwd). If no path is provided, storage
* state is still returned , but won ' t be saved to the disk .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
} ) : Promise < {
cookies : Array < {
name : string ;
value : string ;
domain : string ;
path : string ;
/ * *
* Unix time in seconds .
* /
expires : number ;
httpOnly : boolean ;
secure : boolean ;
2020-12-28 18:03:09 +03:00
sameSite : "Strict" | "Lax" | "None" ;
2020-12-27 00:52:05 +03:00
} > ;
origins : Array < {
origin : string ;
localStorage : Array < {
name : string ;
value : string ;
} > ;
} > ;
} > ;
/ * *
2020-12-29 23:12:46 +03:00
* Removes a route created with
2021-01-07 07:02:51 +03:00
* [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute). When
* ` handler ` is not specified , removes all routes for the ` url ` .
* @param url A glob pattern , regex pattern or predicate receiving [ URL ] used to register a routing with [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute).
* @param handler Optional handler function used to register a routing with [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute).
2020-12-27 00:52:05 +03:00
* /
unroute ( url : string | RegExp | ( ( url : URL ) = > boolean ) , handler ? : ( ( route : Route , request : Request ) = > void ) ) : Promise < void > ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( ) = > boolean , timeout? : number } | ( ( ) = > boolean ) ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'page' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean , timeout? : number } | ( ( page : Page ) = > boolean ) ) : Promise < Page > ;
}
/ * *
2020-12-29 23:12:46 +03:00
* The Worker class represents a [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API). `worker`
* event is emitted on the page object to signal a worker creation . ` close ` event is emitted on the worker object when the
* worker is gone .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'worker' , worker = > {
* console . log ( 'Worker created: ' + worker . url ( ) ) ;
* worker . on ( 'close' , worker = > console . log ( 'Worker destroyed: ' + worker . url ( ) ) ) ;
* } ) ;
*
* console . log ( 'Current workers:' ) ;
* for ( const worker of page . workers ( ) )
* console . log ( ' ' + worker . url ( ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface Worker {
/ * *
* Returns the return value of ` pageFunction `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function passed to the ` worker.evaluate ` returns a [ Promise ] , then ` worker.evaluate ` would wait for the promise
* to resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function passed to the ` worker.evaluate ` returns a non - [ Serializable ] value , then ` worker.evaluate ` returns
* ` undefined ` . DevTools Protocol also supports transferring some additional values that are not serializable by ` JSON ` :
* ` -0 ` , ` NaN ` , ` Infinity ` , ` -Infinity ` , and bigint literals .
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in the worker context
* @param arg Optional argument to pass to ` pageFunction `
* /
evaluate < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < R > ;
evaluate < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` as in - page object ( JSHandle ) .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The only difference between ` worker.evaluate ` and ` worker.evaluateHandle ` is that ` worker.evaluateHandle ` returns
* in - page object ( JSHandle ) .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function passed to the ` worker.evaluateHandle ` returns a [ Promise ] , then ` worker.evaluateHandle ` would wait for
* the promise to resolve and return its value .
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in the page context
* @param arg Optional argument to pass to ` pageFunction `
* /
evaluateHandle < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
evaluateHandle < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when this dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is terminated.
2020-12-27 00:52:05 +03:00
* /
on ( event : 'close' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when this dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is terminated.
2020-12-27 00:52:05 +03:00
* /
once ( event : 'close' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when this dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is terminated.
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'close' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when this dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is terminated.
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'close' , listener : ( worker : Worker ) = > void ) : this ;
/ * *
2020-12-28 18:03:09 +03:00
* Emitted when this dedicated [ WebWorker ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is terminated.
2020-12-27 00:52:05 +03:00
* /
off ( event : 'close' , listener : ( worker : Worker ) = > void ) : this ;
url ( ) : string ; }
/ * *
2020-12-29 23:12:46 +03:00
* JSHandle represents an in - page JavaScript object . JSHandles can be created with the
2021-01-07 07:02:51 +03:00
* [ page . evaluateHandle ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageevaluatehandle) method.
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const windowHandle = await page . evaluateHandle ( ( ) = > window ) ;
* // ...
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* JSHandle prevents the referenced JavaScript object being garbage collected unless the handle is exposed with
2021-01-07 07:02:51 +03:00
* [ jsHandle . dispose ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#jshandledispose). JSHandles are
2020-12-29 23:12:46 +03:00
* auto - disposed when their origin frame gets navigated or the parent context gets destroyed .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* JSHandle instances can be used as an argument in
2021-01-07 07:02:51 +03:00
* [ page . $eval ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageeval),
* [ page . evaluate ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageevaluate) and
* [ page . evaluateHandle ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageevaluatehandle) methods.
2020-12-27 00:52:05 +03:00
* /
export interface JSHandle < T = any > {
/ * *
* Returns the return value of ` pageFunction `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* This method passes this handle as the first argument to ` pageFunction ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If ` pageFunction ` returns a [ Promise ] , then ` handle.evaluate ` would wait for the promise to resolve and return its
* value .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Examples :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const tweetHandle = await page . $ ( '.tweet .retweets' ) ;
* expect ( await tweetHandle . evaluate ( ( node , suffix ) = > node . innerText , ' retweets' ) ) . toBe ( '10 retweets' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* /
evaluate < R , Arg , O extends T = T > ( pageFunction : PageFunctionOn < O , Arg , R > , arg : Arg ) : Promise < R > ;
evaluate < R , O extends T = T > ( pageFunction : PageFunctionOn < O , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` as in - page object ( JSHandle ) .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* This method passes this handle as the first argument to ` pageFunction ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The only difference between ` jsHandle.evaluate ` and ` jsHandle.evaluateHandle ` is that ` jsHandle.evaluateHandle ` returns
* in - page object ( JSHandle ) .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If the function passed to the ` jsHandle.evaluateHandle ` returns a [ Promise ] , then ` jsHandle.evaluateHandle ` would wait
* for the promise to resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* See [ page . evaluateHandle ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageevaluatehandle) for
* more details .
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated
* @param arg Optional argument to pass to ` pageFunction `
* /
evaluateHandle < R , Arg , O extends T = T > ( pageFunction : PageFunctionOn < O , Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
evaluateHandle < R , O extends T = T > ( pageFunction : PageFunctionOn < O , void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
* Returns a JSON representation of the object . If the object has a ` toJSON ` function , it * * will not be called * * .
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * The method will return an empty JSON object if the referenced object is not stringifiable . It will throw an
* error if the object has circular references .
2020-12-27 00:52:05 +03:00
* /
jsonValue ( ) : Promise < T > ;
/ * *
2020-12-28 18:03:09 +03:00
* Returns either ` null ` or the object handle itself , if the object handle is an instance of [ ElementHandle ] .
2020-12-27 00:52:05 +03:00
* /
asElement ( ) : T extends Node ? ElementHandle < T > : null ;
/ * *
* The ` jsHandle.dispose ` method stops referencing the element handle .
* /
dispose ( ) : Promise < void > ;
/ * *
* The method returns a map with * * own property names * * as keys and JSHandle instances for the property values .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const handle = await page . evaluateHandle ( ( ) = > ( { window , document } ) ) ;
* const properties = await handle . getProperties ( ) ;
* const windowHandle = properties . get ( 'window' ) ;
* const documentHandle = properties . get ( 'document' ) ;
* await handle . dispose ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
getProperties ( ) : Promise < Map < string , JSHandle > > ;
/ * *
* Fetches a single property from the referenced object .
* @param propertyName property to get
* /
getProperty ( propertyName : string ) : Promise < JSHandle > ; }
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ JSHandle ]
*
2020-12-29 23:12:46 +03:00
* ElementHandle represents an in - page DOM element . ElementHandles can be created with the
2021-01-07 07:02:51 +03:00
* [ page . $ ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#page) method.
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* const hrefElement = await page . $ ( 'a' ) ;
* await hrefElement . click ( ) ;
* // ...
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ElementHandle prevents DOM element from garbage collection unless the handle is disposed with
2021-01-07 07:02:51 +03:00
* [ jsHandle . dispose ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#jshandledispose). ElementHandles
2020-12-29 23:12:46 +03:00
* are auto - disposed when their origin frame gets navigated .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ElementHandle instances can be used as an argument in
2021-01-07 07:02:51 +03:00
* [ page . $eval ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageeval) and
* [ page . evaluate ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageevaluate) methods.
2020-12-27 00:52:05 +03:00
* /
export interface ElementHandle < T = Node > extends JSHandle < T > {
/ * *
2020-12-29 23:12:46 +03:00
* The method finds an element matching the specified selector in the ` ElementHandle ` ' s subtree . See
2021-01-02 02:17:27 +03:00
* [ Working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details. If no elements match the selector,
* returns ` null ` .
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* /
$ < K extends keyof HTMLElementTagNameMap > ( selector : K ) : Promise < ElementHandleForTag < K > | null > ;
$ ( selector : string ) : Promise < ElementHandle < SVGElement | HTMLElement > | null > ;
/ * *
2020-12-29 23:12:46 +03:00
* The method finds all elements matching the specified selector in the ` ElementHandle ` s subtree . See
2021-01-02 02:17:27 +03:00
* [ Working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details. If no elements match the selector,
* returns empty array .
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* /
$ $ < K extends keyof HTMLElementTagNameMap > ( selector : K ) : Promise < ElementHandleForTag < K > [ ] > ;
$ $ ( selector : string ) : Promise < ElementHandle < SVGElement | HTMLElement > [ ] > ;
/ * *
* Returns the return value of ` pageFunction `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The method finds an element matching the specified selector in the ` ElementHandle ` s subtree and passes it as a first
2021-01-02 02:17:27 +03:00
* argument to ` pageFunction ` . See [ Working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details. If no
* elements match the selector , the method throws an error .
2020-12-28 18:03:09 +03:00
*
* If ` pageFunction ` returns a [ Promise ] , then ` frame. $ eval ` would wait for the promise to resolve and return its value .
*
2020-12-27 00:52:05 +03:00
* Examples :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const tweetHandle = await page . $ ( '.tweet' ) ;
* expect ( await tweetHandle . $eval ( '.like' , node = > node . innerText ) ) . toBe ( '100' ) ;
* expect ( await tweetHandle . $eval ( '.retweets' , node = > node . innerText ) ) . toBe ( '10' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* /
$eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , Arg , R > , arg : Arg ) : Promise < R > ;
$eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , Arg , R > , arg : Arg ) : Promise < R > ;
$eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] , void , R > , arg? : any ) : Promise < R > ;
$eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The method finds all elements matching the specified selector in the ` ElementHandle ` ' s subtree and passes an array of
2021-01-02 02:17:27 +03:00
* matched elements as a first argument to ` pageFunction ` . See
* [ Working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-28 18:03:09 +03:00
*
* If ` pageFunction ` returns a [ Promise ] , then ` frame. $ $ eval ` would wait for the promise to resolve and return its value .
*
2020-12-27 00:52:05 +03:00
* Examples :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` html
* < div class = "feed" >
* < div class = "tweet" > Hello ! < / div >
* < div class = "tweet" > Hi ! < / div >
* < / div >
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const feedHandle = await page . $ ( '.feed' ) ;
* expect ( await feedHandle . $ $eval ( '.tweet' , nodes = > nodes . map ( n = > n . innerText ) ) ) . toEqual ( [ 'Hello!' , 'Hi!' ] ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param pageFunction Function to be evaluated in browser context
* @param arg Optional argument to pass to ` pageFunction `
* /
$ $eval < K extends keyof HTMLElementTagNameMap , R , Arg > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
$ $eval < R , Arg , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , Arg , R > , arg : Arg ) : Promise < R > ;
$ $eval < K extends keyof HTMLElementTagNameMap , R > ( selector : K , pageFunction : PageFunctionOn < HTMLElementTagNameMap [ K ] [ ] , void , R > , arg? : any ) : Promise < R > ;
$ $eval < R , E extends SVGElement | HTMLElement = SVGElement | HTMLElement > ( selector : string , pageFunction : PageFunctionOn < E [ ] , void , R > , arg? : any ) : Promise < R > ;
/ * *
2021-01-05 21:56:02 +03:00
* Returns element specified by selector when it satisfies ` state ` option . Returns ` null ` if waiting for ` hidden ` or
* ` detached ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Wait for the ` selector ` relative to the element handle to satisfy ` state ` option ( either appear / disappear from dom , or
* become visible / hidden ) . If at the moment of calling the method ` selector ` already satisfies the condition , the method
* will return immediately . If the selector doesn ' t satisfy the condition for the ` timeout ` milliseconds , the function will
* throw .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . setContent ( ` <div><span></span></div> ` ) ;
* const div = await page . $ ( 'div' ) ;
* // Waiting for the 'span' selector relative to the div.
* const span = await div . waitForSelector ( 'span' , { state : 'attached' } ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * This method does not work across navigations , use
2021-01-07 07:02:51 +03:00
* [ page . waitForSelector ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforselector) instead.
2021-01-02 02:17:27 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options? : ElementHandleWaitForSelectorOptionsNotHidden ) : Promise < ElementHandleForTag < K > > ;
waitForSelector ( selector : string , options? : ElementHandleWaitForSelectorOptionsNotHidden ) : Promise < ElementHandle < SVGElement | HTMLElement > > ;
waitForSelector < K extends keyof HTMLElementTagNameMap > ( selector : K , options : ElementHandleWaitForSelectorOptions ) : Promise < ElementHandleForTag < K > | null > ;
waitForSelector ( selector : string , options : ElementHandleWaitForSelectorOptions ) : Promise < null | ElementHandle < SVGElement | HTMLElement > > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method returns the bounding box of the element , or ` null ` if the element is not visible . The bounding box is
* calculated relative to the main frame viewport - which is usually the same as the browser window .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Scrolling affects the returned bonding box , similarly to
* [ Element . getBoundingClientRect ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). That
* means ` x ` and / or ` y ` may be negative .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Elements from child frames return the bounding box relative to the main frame , unlike the
* [ Element . getBoundingClientRect ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Assuming the page is static , it is safe to use bounding box coordinates to perform input . For example , the following
* snippet should click the center of the element .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const box = await elementHandle . boundingBox ( ) ;
* await page . mouse . click ( box . x + box . width / 2 , box . y + box . height / 2 ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
boundingBox ( ) : Promise < null | {
/ * *
* the x coordinate of the element in pixels .
* /
x : number ;
/ * *
* the y coordinate of the element in pixels .
* /
y : number ;
/ * *
* the width of the element in pixels .
* /
width : number ;
/ * *
* the height of the element in pixels .
* /
height : number ;
} > ;
/ * *
* This method checks the element by performing the following steps :
2020-12-31 05:04:51 +03:00
* 1 . Ensure that element is a checkbox or a radio input . If not , this method rejects . If the element is already
* checked , this method returns immediately .
2020-12-28 18:03:09 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to click in the center
2020-12-29 23:12:46 +03:00
* of the element .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now checked . If not , this method rejects .
*
2020-12-27 00:52:05 +03:00
* If the element is detached from the DOM at any moment during the action , this method rejects .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
* @param options
* /
check ( options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method clicks the element by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to click in the center
2020-12-29 23:12:46 +03:00
* of the element , or the specified ` position ` .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
2020-12-27 00:52:05 +03:00
* If the element is detached from the DOM at any moment during the action , this method rejects .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
* @param options
* /
click ( options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-28 18:03:09 +03:00
* defaults to 1 . See [ UIEvent . detail ] .
2020-12-27 00:52:05 +03:00
* /
clickCount? : number ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns the content frame for element handles referencing iframe nodes , or ` null ` otherwise
* /
contentFrame ( ) : Promise < null | Frame > ;
/ * *
* This method double clicks the element by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to double click in the
2020-12-29 23:12:46 +03:00
* center of the element , or the specified ` position ` .
2020-12-31 05:04:51 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set . Note that if the
* first click of the ` dblclick() ` triggers a navigation event , this method will reject .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* If the element is detached from the DOM at any moment during the action , this method rejects .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * ` elementHandle.dblclick() ` dispatches two ` click ` events and a single ` dblclick ` event .
2020-12-27 00:52:05 +03:00
* @param options
* /
dblclick ( options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* The snippet below dispatches the ` click ` event on the element . Regardless of the visibility state of the elment , ` click `
* is dispatched . This is equivalend to calling
* [ element . click ( ) ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await elementHandle . dispatchEvent ( 'click' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Under the hood , it creates an instance of an event based on the given ` type ` , initializes it with ` eventInit ` properties
* and dispatches it on the element . Events are ` composed ` , ` cancelable ` and bubble by default .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Since ` eventInit ` is event - specific , please refer to the events documentation for the lists of initial properties :
2020-12-28 18:03:09 +03:00
* - [ DragEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
* - [ FocusEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
* - [ KeyboardEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
* - [ MouseEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
* - [ PointerEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
* - [ TouchEvent ] ( https : //developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
* - [ Event ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Event/Event)
*
2020-12-27 00:52:05 +03:00
* You can also specify ` JSHandle ` as the property value if you want live objects to be passed into the event :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // Note you can only create DataTransfer in Chromium and Firefox
* const dataTransfer = await page . evaluateHandle ( ( ) = > new DataTransfer ( ) ) ;
* await elementHandle . dispatchEvent ( 'dragstart' , { dataTransfer } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param type DOM event type : ` "click" ` , ` "dragstart" ` , etc .
* @param eventInit Optional event - specific initialization properties .
* /
dispatchEvent ( type : string , eventInit? : EvaluationArgument ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method waits for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks, focuses the element, fills it and triggers an `input`
* event after filling . If the element is not an ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element , this method throws
* an error . Note that you can pass an empty string to clear the input field .
2020-12-27 00:52:05 +03:00
* @param value Value to set for the ` <input> ` , ` <textarea> ` or ` [contenteditable] ` element .
* @param options
* /
fill ( value : string , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-28 18:03:09 +03:00
* Calls [ focus ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on the element.
2020-12-27 00:52:05 +03:00
* /
focus ( ) : Promise < void > ;
/ * *
* Returns element attribute value .
* @param name Attribute name to get the value for .
* /
getAttribute ( name : string ) : Promise < null | string > ;
/ * *
* This method hovers over the element by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to hover over the
2020-12-29 23:12:46 +03:00
* center of the element , or the specified ` position ` .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
2020-12-27 00:52:05 +03:00
* If the element is detached from the DOM at any moment during the action , this method rejects .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
* @param options
* /
hover ( options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns the ` element.innerHTML ` .
* /
innerHTML ( ) : Promise < string > ;
/ * *
* Returns the ` element.innerText ` .
* /
innerText ( ) : Promise < string > ;
/ * *
* Returns the frame containing the given element .
* /
ownerFrame ( ) : Promise < null | Frame > ;
/ * *
2020-12-29 23:12:46 +03:00
* Focuses the element , and then uses
2021-01-07 07:02:51 +03:00
* [ keyboard . down ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboarddown) and
* [ keyboard . up ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardup).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
2020-12-28 18:03:09 +03:00
*
2020-12-27 01:31:41 +03:00
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcuts such as ` key: "Control+o" ` or ` key: "Control+Shift+T" ` are supported as well . When speficied with the
* modifier , modifier is pressed and being held while the subsequent key is being pressed .
2020-12-27 00:52:05 +03:00
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* @param options
* /
press ( key : string , options ? : {
/ * *
* Time to wait between ` keydown ` and ` keyup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns the buffer with the captured screenshot .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* This method waits for the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks, then scrolls element into view before taking a
* screenshot . If the element is detached from DOM , the method throws an error .
2020-12-27 00:52:05 +03:00
* @param options
* /
screenshot ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Hides default white background and allows capturing screenshots with transparency . Not applicable to ` jpeg ` images .
* Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
omitBackground? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* The file path to save the image to . The screenshot type will be inferred from file extension . If ` path ` is a relative
* path , then it is resolved relative to the current working directory . If no path is provided , the image won ' t be saved to
* the disk .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
* The quality of the image , between 0 - 100 . Not applicable to ` png ` images .
* /
quality? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
* Specify screenshot type , defaults to ` png ` .
* /
2020-12-28 18:03:09 +03:00
type ? : "png" | "jpeg" ;
2020-12-27 00:52:05 +03:00
} ) : Promise < Buffer > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method waits for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks, then tries to scroll element into view, unless it is
* completely visible as defined by
* [ IntersectionObserver ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)'s ```ratio```.
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Throws when ` elementHandle ` does not point to an element
* [ connected ] ( https : //developer.mozilla.org/en-US/docs/Web/API/Node/isConnected) to a Document or a ShadowRoot.
2020-12-27 00:52:05 +03:00
* @param options
* /
scrollIntoViewIfNeeded ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns the array of option values that have been successfully selected .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Triggers a ` change ` and ` input ` event once all the provided options have been selected . If element is not a ` <select> `
* element , the method throws an error .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // single selection matching the value
* handle . selectOption ( 'blue' ) ;
*
* // single selection matching both the value and the label
* handle . selectOption ( { label : 'Blue' } ) ;
*
* // multiple selection
* handle . selectOption ( 'red' , 'green' , 'blue' ) ;
*
* // multiple selection for blue, red and second option
* handle . selectOption ( { value : 'blue' } , { index : 2 } , 'red' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* @param values Options to select . If the ` <select> ` has the ` multiple ` attribute , all matching options are selected , otherwise only the first option matching one of the passed options is selected . String values are equivalent to ` {value:'string'} ` . Option
* is considered matching if all specified properties match .
2020-12-27 00:52:05 +03:00
* @param options
* /
selectOption ( values : null | string | ElementHandle | Array < string > | {
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.value ` . Optional .
2020-12-27 00:52:05 +03:00
* /
value? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.label ` . Optional .
2020-12-27 00:52:05 +03:00
* /
label? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by the index . Optional .
2020-12-27 00:52:05 +03:00
* /
index? : number ;
} | Array < ElementHandle > | Array < {
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.value ` . Optional .
2020-12-27 00:52:05 +03:00
* /
value? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by ` option.label ` . Optional .
2020-12-27 00:52:05 +03:00
* /
label? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Matches by the index . Optional .
2020-12-27 00:52:05 +03:00
* /
index? : number ;
} > , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < Array < string > > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method waits for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks, then focuses the element and selects all its text
* content .
2020-12-27 00:52:05 +03:00
* @param options
* /
selectText ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* This method expects ` elementHandle ` to point to an
* [ input element ] ( https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Sets the value of the file input to these file paths or files . If some of the ` filePaths ` are relative paths , then they
* are resolved relative to the the current working directory . For empty array , clears the selected files .
2020-12-27 00:52:05 +03:00
* @param files
* @param options
* /
setInputFiles ( files : string | Array < string > | {
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] name * * required * *
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] type * * required * *
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
* File content * * required * *
* /
buffer : Buffer ;
} | Array < {
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] name * * required * *
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] type * * required * *
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
* File content * * required * *
* /
buffer : Buffer ;
} > , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method taps the element by performing the following steps :
2020-12-28 18:03:09 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . touchscreen ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagetouchscreen) to tap the
2020-12-29 23:12:46 +03:00
* center of the element , or the specified ` position ` .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
*
2020-12-27 00:52:05 +03:00
* If the element is detached from the DOM at any moment during the action , this method rejects .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * ` elementHandle.tap() ` requires that the ` hasTouch ` option of the browser context be set to true .
2020-12-27 00:52:05 +03:00
* @param options
* /
tap ( options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Modifier keys to press . Ensures that only these modifiers are pressed during the operation , and then restores current
* modifiers back . If not specified , currently pressed modifiers are used .
2020-12-27 00:52:05 +03:00
* /
modifiers? : Array < "Alt" | "Control" | "Meta" | "Shift" > ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A point to use relative to the top - left corner of element padding box . If not specified , uses some visible point of the
* element .
2020-12-27 00:52:05 +03:00
* /
position ? : {
x : number ;
y : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns the ` node.textContent ` .
* /
textContent ( ) : Promise < null | string > ;
/ * *
* Focuses the element , and then sends a ` keydown ` , ` keypress ` / ` input ` , and ` keyup ` event for each character in the text .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* To press a special key , like ` Control ` or ` ArrowDown ` , use
2021-01-07 07:02:51 +03:00
* [ elementHandle . press ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#elementhandlepress).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await elementHandle . type ( 'Hello' ) ; // Types instantly
* await elementHandle . type ( 'World' , { delay : 100 } ) ; // Types slower, like a user
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of typing into a text field and then submitting the form :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const elementHandle = await page . $ ( 'input' ) ;
* await elementHandle . type ( 'some text' ) ;
* await elementHandle . press ( 'Enter' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param text A text to type into a focused element .
* @param options
* /
type ( text : string , options ? : {
/ * *
* Time to wait between key presses in milliseconds . Defaults to 0 .
* /
delay? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method checks the element by performing the following steps :
2020-12-31 05:04:51 +03:00
* 1 . Ensure that element is a checkbox or a radio input . If not , this method rejects . If the element is already
* unchecked , this method returns immediately .
2020-12-28 18:03:09 +03:00
* 1 . Wait for [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks on the element, unless `force` option is set.
* 1 . Scroll the element into view if needed .
2020-12-31 05:04:51 +03:00
* 1 . Use [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse) to click in the center
2020-12-29 23:12:46 +03:00
* of the element .
2020-12-28 18:03:09 +03:00
* 1 . Wait for initiated navigations to either succeed or fail , unless ` noWaitAfter ` option is set .
* 1 . Ensure that the element is now unchecked . If not , this method rejects .
*
2020-12-27 00:52:05 +03:00
* If the element is detached from the DOM at any moment during the action , this method rejects .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When all steps combined have not finished during the specified ` timeout ` , this method rejects with a [ TimeoutError ] .
* Passing zero timeout disables this .
2020-12-27 00:52:05 +03:00
* @param options
* /
uncheck ( options ? : {
/ * *
2020-12-28 18:03:09 +03:00
* Whether to bypass the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks. Defaults to `false`.
2020-12-27 00:52:05 +03:00
* /
force? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2021-01-05 21:56:02 +03:00
* Returns when the element satisfies the ` state ` .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Depending on the ` state ` parameter , this method waits for one of the [ actionability ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md) checks to pass.
* This method throws when the element is detached while waiting , unless waiting for the ` "hidden" ` state .
2020-12-28 18:03:09 +03:00
* - ` "visible" ` Wait until the element is [ visible ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md#visible).
2020-12-29 23:12:46 +03:00
* - ` "hidden" ` Wait until the element is [ not visible ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md#visible) or
* [ not attached ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md#attached). Note that waiting for hidden does not throw when the element detaches.
* - ` "stable" ` Wait until the element is both [ visible ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md#visible) and
* [ stable ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md#stable).
2020-12-28 18:03:09 +03:00
* - ` "enabled" ` Wait until the element is [ enabled ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md#enabled).
* - ` "disabled" ` Wait until the element is [ not enabled ] ( https : //github.com/microsoft/playwright/blob/master/docs/actionability.md#enabled).
*
2020-12-27 00:52:05 +03:00
* If the element does not satisfy the condition for the ` timeout ` milliseconds , this method will throw .
* @param state A state to wait for , see below for more details .
* @param options
* /
2020-12-28 18:03:09 +03:00
waitForElementState ( state : "visible" | "hidden" | "stable" | "enabled" | "disabled" , options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ; }
/ * *
2020-12-29 23:12:46 +03:00
* BrowserType provides methods to launch a specific browser instance or connect to an existing one . The following is a
* typical example of using Playwright to drive automation :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* // other actions...
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface BrowserType < Browser > {
/ * *
* This methods attaches Playwright to an existing browser instance .
* @param params
* /
connect ( params : ConnectOptions ) : Promise < Browser > ;
/ * *
* A path where Playwright expects to find a bundled browser executable .
* /
executablePath ( ) : string ;
/ * *
* Returns the browser instance .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* You can use ` ignoreDefaultArgs ` to filter out ` --mute-audio ` from default arguments :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const browser = await chromium . launch ( { // Or 'firefox' or 'webkit'.
* ignoreDefaultArgs : [ '--mute-audio' ]
* } ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * Chromium - only * * Playwright can also be used to control the Chrome browser , but it works best with the version of
* Chromium it is bundled with . There is no guarantee it will work with any other version . Use ` executablePath ` option with
* extreme caution .
2020-12-27 01:31:41 +03:00
* >
2020-12-29 23:12:46 +03:00
* > If Google Chrome ( rather than Chromium ) is preferred , a
* [ Chrome Canary ] ( https : //www.google.com/chrome/browser/canary.html) or
* [ Dev Channel ] ( https : //www.chromium.org/getting-involved/dev-channel) build is suggested.
2020-12-27 01:31:41 +03:00
* >
2021-01-07 07:02:51 +03:00
* > In [ browserType . launch ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsertypelaunch) above,
* any mention of Chromium also applies to Chrome .
2020-12-27 01:31:41 +03:00
* >
2020-12-29 23:12:46 +03:00
* > See [ ` this article ` ] ( https : //www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) for
* a description of the differences between Chromium and Chrome .
* [ ` This article ` ] ( https : //chromium.googlesource.com/chromium/src/+/lkgr/docs/chromium_browser_vs_google_chrome.md)
* describes some differences for Linux users .
2020-12-27 00:52:05 +03:00
* @param options
* /
launch ( options? : LaunchOptions ) : Promise < Browser > ;
/ * *
* Returns the persistent browser context instance .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Launches browser that uses persistent storage located at ` userDataDir ` and returns the only context . Closing this
* context will automatically close the browser .
* @param userDataDir Path to a User Data Directory , which stores browser session data like cookies and local storage . More details for [ Chromium ] ( https : //chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options#User_Profile).
2020-12-27 00:52:05 +03:00
* @param options
* /
launchPersistentContext ( userDataDir : string , options ? : {
/ * *
* Whether to automatically download all the attachments . Defaults to ` false ` where all the downloads are canceled .
* /
acceptDownloads? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Additional arguments to pass to the browser instance . The list of Chromium flags can be found
* [ here ] ( http : //peter.sh/experiments/chromium-command-line-switches/).
2020-12-27 00:52:05 +03:00
* /
args? : Array < string > ;
/ * *
* Toggles bypassing page ' s Content - Security - Policy .
* /
bypassCSP? : boolean ;
/ * *
* Enable Chromium sandboxing . Defaults to ` true ` .
* /
chromiumSandbox? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . See
2021-01-07 07:02:51 +03:00
* [ page . emulateMedia ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageemulatemedia) for more
* details . Defaults to '`light`' .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
colorScheme ? : "light" | "dark" | "no-preference" ;
2020-12-27 00:52:05 +03:00
/ * *
* Specify device scale factor ( can be thought of as dpr ) . Defaults to ` 1 ` .
* /
deviceScaleFactor? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* * * Chromium - only * * Whether to auto - open a Developer Tools panel for each tab . If this option is ` true ` , the ` headless `
* option will be set ` false ` .
2020-12-27 00:52:05 +03:00
* /
devtools? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* If specified , accepted downloads are downloaded into this directory . Otherwise , temporary directory is created and is
* deleted when browser is closed .
2020-12-27 00:52:05 +03:00
* /
downloadsPath? : string ;
/ * *
* Specify environment variables that will be visible to the browser . Defaults to ` process.env ` .
* /
env ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
2020-12-29 23:12:46 +03:00
* Path to a browser executable to run instead of the bundled one . If ` executablePath ` is a relative path , then it is
* resolved relative to the current working directory . * * BEWARE * * : Playwright is only guaranteed to work with the bundled
* Chromium , Firefox or WebKit , use at your own risk .
2020-12-27 00:52:05 +03:00
* /
executablePath? : string ;
/ * *
* An object containing additional HTTP headers to be sent with every request . All header values must be strings .
* /
extraHTTPHeaders ? : { [ key : string ] : string ; } ;
geolocation ? : {
/ * *
* Latitude between - 90 and 90 .
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 .
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
} ;
/ * *
* Close the browser process on SIGHUP . Defaults to ` true ` .
* /
handleSIGHUP? : boolean ;
/ * *
* Close the browser process on Ctrl - C . Defaults to ` true ` .
* /
handleSIGINT? : boolean ;
/ * *
* Close the browser process on SIGTERM . Defaults to ` true ` .
* /
handleSIGTERM? : boolean ;
/ * *
* Specifies if viewport supports touch events . Defaults to false .
* /
hasTouch? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Whether to run browser in headless mode . More details for
* [ Chromium ] ( https : //developers.google.com/web/updates/2017/04/headless-chrome) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode). Defaults to `true` unless the
* ` devtools ` option is ` true ` .
2020-12-27 00:52:05 +03:00
* /
headless? : boolean ;
/ * *
2020-12-28 18:03:09 +03:00
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
2020-12-27 00:52:05 +03:00
* /
httpCredentials ? : {
username : string ;
password : string ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* If ` true ` , then do not use any of the default arguments . If an array is given , then filter out the given default
* arguments . Dangerous option ; use with care . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
ignoreDefaultArgs? : boolean | Array < string > ;
/ * *
* Whether to ignore HTTPS errors during navigation . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Whether the ` meta viewport ` tag is taken into account and touch events are enabled . Defaults to ` false ` . Not supported
* in Firefox .
2020-12-27 00:52:05 +03:00
* /
isMobile? : boolean ;
/ * *
* Whether or not to enable JavaScript in the context . Defaults to ` true ` .
* /
javaScriptEnabled? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Specify user locale , for example ` en-GB ` , ` de-DE ` , etc . Locale will affect ` navigator.language ` value , ` Accept-Language `
* request header value as well as number and date formatting rules .
2020-12-27 00:52:05 +03:00
* /
locale? : string ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Whether to emulate network being offline . Defaults to ` false ` .
* /
offline? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A list of permissions to grant to all pages in this context . See
2021-01-07 07:02:51 +03:00
* [ browserContext . grantPermissions ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextgrantpermissions)
2020-12-29 23:12:46 +03:00
* for more details .
2020-12-27 00:52:05 +03:00
* /
permissions? : Array < string > ;
/ * *
* Network proxy settings .
* /
proxy ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
2020-12-27 00:52:05 +03:00
* /
server : string ;
/ * *
* Optional coma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Enables [ HAR ] ( http : //www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file. If not
* specified , the HAR is not recorded . Make sure to await
2021-01-07 07:02:51 +03:00
* [ browserContext . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextclose) for the
2020-12-29 23:12:46 +03:00
* HAR to be saved .
2020-12-27 00:52:05 +03:00
* /
recordHar ? : {
/ * *
* Optional setting to control whether to omit request content from the HAR . Defaults to ` false ` .
* /
omitContent? : boolean ;
/ * *
* Path on the filesystem to write the HAR file to .
* /
path : string ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Enables video recording for all pages into ` recordVideo.dir ` directory . If not specified videos are not recorded . Make
* sure to await
2021-01-07 07:02:51 +03:00
* [ browserContext . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextclose) for
* videos to be saved .
2020-12-27 00:52:05 +03:00
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` . If ` viewport ` is not
* configured explicitly the video size defaults to 1280 x720 . Actual picture of each page will be scaled down if necessary
* to fit the specified size .
2020-12-27 00:52:05 +03:00
* /
size ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Slows down Playwright operations by the specified amount of milliseconds . Useful so that you can see what is going on .
* Defaults to 0 .
2020-12-27 00:52:05 +03:00
* /
slowMo? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds to wait for the browser instance to start . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to
* disable timeout .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Changes the timezone of the context . See
* [ ICU ' s metaZones . txt ] ( https : //cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
* for a list of supported timezone IDs .
2020-12-27 00:52:05 +03:00
* /
timezoneId? : string ;
/ * *
* Specific user agent to use in this context .
* /
userAgent? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* * * NOTE * * Use ` recordVideo ` instead , it takes precedence over ` videoSize ` . Specifies dimensions of the automatically
* recorded video . Can only be used if ` videosPath ` is set . If not specified the size will be equal to ` viewport ` . If
* ` viewport ` is not configured explicitly the video size defaults to 1280 x720 . Actual picture of the page will be scaled
* down if necessary to fit specified size .
2020-12-27 00:52:05 +03:00
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* * * NOTE * * Use ` recordVideo ` instead , it takes precedence over ` videosPath ` . Enables video recording for all pages to
* ` videosPath ` directory . If not specified , videos are not recorded . Make sure to await
2021-01-07 07:02:51 +03:00
* [ browserContext . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextclose) for
* videos to be saved .
2020-12-27 00:52:05 +03:00
* /
videosPath? : string ;
/ * *
* Sets a consistent viewport for each page . Defaults to an 1280 x720 viewport . ` null ` disables the default viewport .
* /
viewport? : null | {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
} ) : Promise < BrowserContext > ;
/ * *
* Returns the browser app instance .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Launches browser server that client can connect to . An example of launching a browser executable and connecting to it
* later :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'webkit' or 'firefox'.
*
* ( async ( ) = > {
* const browserServer = await chromium . launchServer ( ) ;
* const wsEndpoint = browserServer . wsEndpoint ( ) ;
* // Use web socket endpoint later to establish a connection.
* const browser = await chromium . connect ( { wsEndpoint } ) ;
* // Close browser instance.
* await browserServer . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param options
* /
launchServer ( options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Additional arguments to pass to the browser instance . The list of Chromium flags can be found
* [ here ] ( http : //peter.sh/experiments/chromium-command-line-switches/).
2020-12-27 00:52:05 +03:00
* /
args? : Array < string > ;
/ * *
* Enable Chromium sandboxing . Defaults to ` true ` .
* /
chromiumSandbox? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* * * Chromium - only * * Whether to auto - open a Developer Tools panel for each tab . If this option is ` true ` , the ` headless `
* option will be set ` false ` .
2020-12-27 00:52:05 +03:00
* /
devtools? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* If specified , accepted downloads are downloaded into this directory . Otherwise , temporary directory is created and is
* deleted when browser is closed .
2020-12-27 00:52:05 +03:00
* /
downloadsPath? : string ;
/ * *
* Specify environment variables that will be visible to the browser . Defaults to ` process.env ` .
* /
env ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
2020-12-29 23:12:46 +03:00
* Path to a browser executable to run instead of the bundled one . If ` executablePath ` is a relative path , then it is
* resolved relative to the current working directory . * * BEWARE * * : Playwright is only guaranteed to work with the bundled
* Chromium , Firefox or WebKit , use at your own risk .
2020-12-27 00:52:05 +03:00
* /
executablePath? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Firefox user preferences . Learn more about the Firefox user preferences at
* [ ` about:config ` ] ( https : //support.mozilla.org/en-US/kb/about-config-editor-firefox).
2020-12-27 00:52:05 +03:00
* /
firefoxUserPrefs ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Close the browser process on SIGHUP . Defaults to ` true ` .
* /
handleSIGHUP? : boolean ;
/ * *
* Close the browser process on Ctrl - C . Defaults to ` true ` .
* /
handleSIGINT? : boolean ;
/ * *
* Close the browser process on SIGTERM . Defaults to ` true ` .
* /
handleSIGTERM? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Whether to run browser in headless mode . More details for
* [ Chromium ] ( https : //developers.google.com/web/updates/2017/04/headless-chrome) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode). Defaults to `true` unless the
* ` devtools ` option is ` true ` .
2020-12-27 00:52:05 +03:00
* /
headless? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* If ` true ` , then do not use any of the default arguments . If an array is given , then filter out the given default
* arguments . Dangerous option ; use with care . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
ignoreDefaultArgs? : boolean | Array < string > ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Port to use for the web socket . Defaults to 0 that picks any available port .
* /
port? : number ;
/ * *
* Network proxy settings .
* /
proxy ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
2020-12-27 00:52:05 +03:00
* /
server : string ;
/ * *
* Optional coma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds to wait for the browser instance to start . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to
* disable timeout .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < BrowserServer > ;
/ * *
* Returns browser name . For example : ` 'chromium' ` , ` 'webkit' ` or ` 'firefox' ` .
* /
name ( ) : string ; }
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ Browser ]
*
2020-12-29 23:12:46 +03:00
* Chromium - specific features including Tracing , service worker support , etc . You can use
2021-01-07 07:02:51 +03:00
* [ chromiumBrowser . startTracing ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#chromiumbrowserstarttracing)
2020-12-29 23:12:46 +03:00
* and
2021-01-07 07:02:51 +03:00
* [ chromiumBrowser . stopTracing ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#chromiumbrowserstoptracing)
2020-12-29 23:12:46 +03:00
* to create a trace file which can be opened in Chrome DevTools or
* [ timeline viewer ] ( https : //chromedevtools.github.io/timeline-viewer/).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await browser . startTracing ( page , { path : 'trace.json' } ) ;
* await page . goto ( 'https://www.google.com' ) ;
* await browser . stopTracing ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface ChromiumBrowser extends Browser {
/ * *
* Returns an array of all open browser contexts . In a newly created browser , this will return zero browser contexts .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const browser = await pw . webkit . launch ( ) ;
* console . log ( browser . contexts ( ) . length ) ; // prints `0`
*
* const context = await browser . newContext ( ) ;
* console . log ( browser . contexts ( ) . length ) ; // prints `1`
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
contexts ( ) : Array < ChromiumBrowserContext > ;
/ * *
* Creates a new browser context . It won ' t share cookies / cache with other browser contexts .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* ( async ( ) = > {
* const browser = await playwright . firefox . launch ( ) ; // Or 'chromium' or 'webkit'.
* // Create a new incognito browser context.
* const context = await browser . newContext ( ) ;
* // Create a new page in a pristine context.
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param options
* /
newContext ( options? : BrowserContextOptions ) : Promise < ChromiumBrowserContext > ;
/ * *
* Returns the newly created browser session .
* /
newBrowserCDPSession ( ) : Promise < CDPSession > ;
/ * *
* Only one trace can be active at a time per browser .
* @param page Optional , if specified , tracing includes screenshots of the given page .
* @param options
* /
startTracing ( page? : Page , options ? : {
/ * *
* specify custom categories to use instead of default .
* /
categories? : Array < string > ;
/ * *
* A path to write the trace file to .
* /
path? : string ;
/ * *
* captures screenshots in the trace .
* /
screenshots? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns the buffer with trace data .
* /
stopTracing ( ) : Promise < Buffer > ; }
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ EventEmitter ] ( https : //nodejs.org/api/events.html#events_class_eventemitter)
*
2020-12-27 00:52:05 +03:00
* The ` CDPSession ` instances are used to talk raw Chrome Devtools Protocol :
2020-12-27 01:31:41 +03:00
* - protocol methods can be called with ` session.send ` method .
* - protocol events can be subscribed to with ` session.on ` method .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Useful links :
2020-12-29 23:12:46 +03:00
* - Documentation on DevTools Protocol can be found here :
* [ DevTools Protocol Viewer ] ( https : //chromedevtools.github.io/devtools-protocol/).
2020-12-31 05:04:51 +03:00
* - Getting Started with DevTools Protocol :
* https : //github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const client = await page . context ( ) . newCDPSession ( page ) ;
* await client . send ( 'Animation.enable' ) ;
* client . on ( 'Animation.animationCreated' , ( ) = > console . log ( 'Animation created!' ) ) ;
* const response = await client . send ( 'Animation.getPlaybackRate' ) ;
* console . log ( 'playback rate is ' + response . playbackRate ) ;
* await client . send ( 'Animation.setPlaybackRate' , {
* playbackRate : response.playbackRate / 2
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface CDPSession {
on : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
addListener : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
off : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
removeListener : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
once : < T extends keyof Protocol.Events | symbol > ( event : T , listener : ( payload : T extends symbol ? any : Protocol . Events [ T extends keyof Protocol . Events ? T : never ] ) = > void ) = > this ;
/ * *
* @param method protocol method name
* @param params Optional method parameters
* /
send < T extends keyof Protocol.CommandParameters > (
method : T ,
params? : Protocol.CommandParameters [ T ]
) : Promise < Protocol.CommandReturnValues [ T ] > ;
/ * *
2020-12-29 23:12:46 +03:00
* Detaches the CDPSession from the target . Once detached , the CDPSession object won 't emit any events and can' t be used to
* send messages .
2020-12-27 00:52:05 +03:00
* /
detach ( ) : Promise < void > ; }
type DeviceDescriptor = {
viewport : ViewportSize ;
userAgent : string ;
deviceScaleFactor : number ;
isMobile : boolean ;
hasTouch : boolean ;
defaultBrowserType : 'chromium' | 'firefox' | 'webkit' ;
} ;
export namespace errors {
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ Error ]
*
2020-12-29 23:12:46 +03:00
* TimeoutError is emitted whenever certain operations are terminated due to timeout , e . g .
2021-01-07 07:02:51 +03:00
* [ page . waitForSelector ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforselector) or
* [ browserType . launch ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsertypelaunch).
2020-12-27 00:52:05 +03:00
* /
class TimeoutError extends Error { }
}
/ * *
2020-12-29 23:12:46 +03:00
* The Accessibility class provides methods for inspecting Chromium ' s accessibility tree . The accessibility tree is used by
* assistive technology such as [ screen readers ] ( https : //en.wikipedia.org/wiki/Screen_reader) or
* [ switches ] ( https : //en.wikipedia.org/wiki/Switch_access).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Accessibility is a very platform - specific thing . On different platforms , there are different screen readers that might
* have wildly different output .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Blink - Chromium ' s rendering engine - has a concept of "accessibility tree" , which is then translated into different
* platform - specific APIs . Accessibility namespace gives users access to the Blink Accessibility Tree .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Most of the accessibility tree gets filtered out when converting from Blink AX Tree to Platform - specific AX - Tree or by
* assistive technologies themselves . By default , Playwright tries to approximate this filtering , exposing only the
* "interesting" nodes of the tree .
2020-12-27 00:52:05 +03:00
* /
export interface Accessibility {
/ * *
2020-12-29 23:12:46 +03:00
* Captures the current state of the accessibility tree . The returned object represents the root accessible node of the
* page .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * The Chromium accessibility tree contains nodes that go unused on most platforms and by most screen readers .
* Playwright will discard them as well for an easier to process tree , unless ` interestingOnly ` is set to ` false ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of dumping the entire accessibility tree :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const snapshot = await page . accessibility . snapshot ( ) ;
* console . log ( snapshot ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of logging the focused node ' s name :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const snapshot = await page . accessibility . snapshot ( ) ;
* const node = findFocusedNode ( snapshot ) ;
* console . log ( node && node . name ) ;
*
* function findFocusedNode ( node ) {
* if ( node . focused )
* return node ;
* for ( const child of node . children || [ ] ) {
* const foundNode = findFocusedNode ( child ) ;
* return foundNode ;
* }
* return null ;
* }
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param options
* /
snapshot ( options ? : {
/ * *
* Prune uninteresting nodes from the tree . Defaults to ` true ` .
* /
interestingOnly? : boolean ;
/ * *
* The root DOM element for the snapshot . Defaults to the whole page .
* /
root? : ElementHandle ;
} ) : Promise < null | AccessibilityNode > ;
}
type AccessibilityNode = {
role : string ;
name : string ;
value? : string | number ;
description? : string ;
keyshortcuts? : string ;
roledescription? : string ;
valuetext? : string ;
disabled? : boolean ;
expanded? : boolean ;
focused? : boolean ;
modal? : boolean ;
multiline? : boolean ;
multiselectable? : boolean ;
readonly ? : boolean ;
required? : boolean ;
selected? : boolean ;
checked? : boolean | "mixed" ;
pressed? : boolean | "mixed" ;
level? : number ;
valuemin? : number ;
valuemax? : number ;
autocomplete? : string ;
haspopup? : string ;
invalid? : string ;
orientation? : string ;
children? : AccessibilityNode [ ] ;
}
export const selectors : Selectors ;
export const devices : Devices & DeviceDescriptor [ ] ;
// This is required to not export everything by default. See https://github.com/Microsoft/TypeScript/issues/19545#issuecomment-340490459
export { } ;
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ EventEmitter ] ( https : //nodejs.org/api/events.html#events_class_eventemitter)
*
2020-12-29 23:12:46 +03:00
* A Browser is created when Playwright connects to a browser instance , either through
2021-01-07 07:02:51 +03:00
* [ browserType . launch ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsertypelaunch) or
* [ browserType . connect ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsertypeconnect).
2020-12-28 18:03:09 +03:00
*
* An example of using a [ Browser ] to create a [ Page ] :
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { firefox } = require ( 'playwright' ) ; // Or 'chromium' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await firefox . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* See [ ChromiumBrowser ] , [ FirefoxBrowser ] and [ WebKitBrowser ] for browser - specific features . Note that
2021-01-07 07:02:51 +03:00
* [ browserType . connect ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsertypeconnect) and
* [ browserType . launch ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsertypelaunch) always return
* a specific browser instance , based on the browser being connected to or launched .
2020-12-27 00:52:05 +03:00
* /
export interface Browser extends EventEmitter {
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser gets disconnected from the browser application . This might happen because of one of the following :
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
on ( event : 'disconnected' , listener : ( ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser gets disconnected from the browser application . This might happen because of one of the following :
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
once ( event : 'disconnected' , listener : ( ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser gets disconnected from the browser application . This might happen because of one of the following :
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
addListener ( event : 'disconnected' , listener : ( ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser gets disconnected from the browser application . This might happen because of one of the following :
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
removeListener ( event : 'disconnected' , listener : ( ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser gets disconnected from the browser application . This might happen because of one of the following :
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
off ( event : 'disconnected' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* In case this browser is obtained using
2021-01-07 07:02:51 +03:00
* [ browserType . launch ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsertypelaunch), closes the
* browser and all of its pages ( if any were opened ) .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* In case this browser is obtained using
2021-01-07 07:02:51 +03:00
* [ browserType . connect ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsertypeconnect), clears all
* created contexts belonging to this browser and disconnects from the browser server .
2020-12-28 18:03:09 +03:00
*
* The [ Browser ] object itself is considered to be disposed and cannot be used anymore .
2020-12-27 00:52:05 +03:00
* /
close ( ) : Promise < void > ;
/ * *
* Returns an array of all open browser contexts . In a newly created browser , this will return zero browser contexts .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const browser = await pw . webkit . launch ( ) ;
* console . log ( browser . contexts ( ) . length ) ; // prints `0`
*
* const context = await browser . newContext ( ) ;
* console . log ( browser . contexts ( ) . length ) ; // prints `1`
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
contexts ( ) : Array < BrowserContext > ;
/ * *
* Indicates that the browser is connected .
* /
isConnected ( ) : boolean ;
/ * *
* Creates a new browser context . It won ' t share cookies / cache with other browser contexts .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* ( async ( ) = > {
* const browser = await playwright . firefox . launch ( ) ; // Or 'chromium' or 'webkit'.
* // Create a new incognito browser context.
* const context = await browser . newContext ( ) ;
* // Create a new page in a pristine context.
* const page = await context . newPage ( ) ;
* await page . goto ( 'https://example.com' ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param options
* /
newContext ( options? : BrowserContextOptions ) : Promise < BrowserContext > ;
/ * *
* Creates a new page in a new browser context . Closing this page will close the context as well .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* This is a convenience API that should only be used for the single - page scenarios and short snippets . Production code and
* testing frameworks should explicitly create
2021-01-07 07:02:51 +03:00
* [ browser . newContext ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsernewcontext) followed by
* the [ browserContext . newPage ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextnewpage)
* to control their exact life times .
2020-12-27 00:52:05 +03:00
* @param options
* /
newPage ( options ? : {
/ * *
* Whether to automatically download all the attachments . Defaults to ` false ` where all the downloads are canceled .
* /
acceptDownloads? : boolean ;
/ * *
* Toggles bypassing page ' s Content - Security - Policy .
* /
bypassCSP? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . See
2021-01-07 07:02:51 +03:00
* [ page . emulateMedia ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageemulatemedia) for more
* details . Defaults to '`light`' .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
colorScheme ? : "light" | "dark" | "no-preference" ;
2020-12-27 00:52:05 +03:00
/ * *
* Specify device scale factor ( can be thought of as dpr ) . Defaults to ` 1 ` .
* /
deviceScaleFactor? : number ;
/ * *
* An object containing additional HTTP headers to be sent with every request . All header values must be strings .
* /
extraHTTPHeaders ? : { [ key : string ] : string ; } ;
geolocation ? : {
/ * *
* Latitude between - 90 and 90 .
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 .
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
} ;
/ * *
* Specifies if viewport supports touch events . Defaults to false .
* /
hasTouch? : boolean ;
/ * *
2020-12-28 18:03:09 +03:00
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
2020-12-27 00:52:05 +03:00
* /
httpCredentials ? : {
username : string ;
password : string ;
} ;
/ * *
* Whether to ignore HTTPS errors during navigation . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Whether the ` meta viewport ` tag is taken into account and touch events are enabled . Defaults to ` false ` . Not supported
* in Firefox .
2020-12-27 00:52:05 +03:00
* /
isMobile? : boolean ;
/ * *
* Whether or not to enable JavaScript in the context . Defaults to ` true ` .
* /
javaScriptEnabled? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Specify user locale , for example ` en-GB ` , ` de-DE ` , etc . Locale will affect ` navigator.language ` value , ` Accept-Language `
* request header value as well as number and date formatting rules .
2020-12-27 00:52:05 +03:00
* /
locale? : string ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Whether to emulate network being offline . Defaults to ` false ` .
* /
offline? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A list of permissions to grant to all pages in this context . See
2021-01-07 07:02:51 +03:00
* [ browserContext . grantPermissions ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextgrantpermissions)
2020-12-29 23:12:46 +03:00
* for more details .
2020-12-27 00:52:05 +03:00
* /
permissions? : Array < string > ;
/ * *
2020-12-29 23:12:46 +03:00
* Network proxy settings to use with this context . Note that browser needs to be launched with the global proxy for this
* option to work . If all contexts override the proxy , global proxy will be never used and can be any string , for example
* ` launch({ proxy: { server: 'per-context' } }) ` .
2020-12-27 00:52:05 +03:00
* /
proxy ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
2020-12-27 00:52:05 +03:00
* /
server : string ;
/ * *
* Optional coma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Enables [ HAR ] ( http : //www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file. If not
* specified , the HAR is not recorded . Make sure to await
2021-01-07 07:02:51 +03:00
* [ browserContext . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextclose) for the
2020-12-29 23:12:46 +03:00
* HAR to be saved .
2020-12-27 00:52:05 +03:00
* /
recordHar ? : {
/ * *
* Optional setting to control whether to omit request content from the HAR . Defaults to ` false ` .
* /
omitContent? : boolean ;
/ * *
* Path on the filesystem to write the HAR file to .
* /
path : string ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Enables video recording for all pages into ` recordVideo.dir ` directory . If not specified videos are not recorded . Make
* sure to await
2021-01-07 07:02:51 +03:00
* [ browserContext . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextclose) for
* videos to be saved .
2020-12-27 00:52:05 +03:00
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` . If ` viewport ` is not
* configured explicitly the video size defaults to 1280 x720 . Actual picture of each page will be scaled down if necessary
* to fit the specified size .
2020-12-27 00:52:05 +03:00
* /
size ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Populates context with given storage state . This method can be used to initialize context with logged - in information
* obtained via
2021-01-07 07:02:51 +03:00
* [ browserContext . storageState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextstoragestate).
2020-12-29 23:12:46 +03:00
* Either a path to the file with saved storage , or an object with the following fields :
2020-12-27 00:52:05 +03:00
* /
storageState? : string | {
/ * *
* Optional cookies to set for context
* /
cookies? : Array < {
/ * *
* * * required * *
* /
name : string ;
/ * *
* * * required * *
* /
value : string ;
/ * *
* Optional either url or domain / path are required
* /
url? : string ;
/ * *
* Optional either url or domain / path are required
* /
domain? : string ;
/ * *
* Optional either url or domain / path are required
* /
path? : string ;
/ * *
* Optional Unix time in seconds .
* /
expires? : number ;
/ * *
* Optional httpOnly flag
* /
httpOnly? : boolean ;
/ * *
* Optional secure flag
* /
secure? : boolean ;
/ * *
* Optional sameSite flag
* /
2020-12-28 18:03:09 +03:00
sameSite ? : "Strict" | "Lax" | "None" ;
2020-12-27 00:52:05 +03:00
} > ;
/ * *
* Optional localStorage to set for context
* /
origins? : Array < {
origin : string ;
localStorage : Array < {
name : string ;
value : string ;
} > ;
} > ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Changes the timezone of the context . See
* [ ICU ' s metaZones . txt ] ( https : //cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
* for a list of supported timezone IDs .
2020-12-27 00:52:05 +03:00
* /
timezoneId? : string ;
/ * *
* Specific user agent to use in this context .
* /
userAgent? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* * * NOTE * * Use ` recordVideo ` instead , it takes precedence over ` videoSize ` . Specifies dimensions of the automatically
* recorded video . Can only be used if ` videosPath ` is set . If not specified the size will be equal to ` viewport ` . If
* ` viewport ` is not configured explicitly the video size defaults to 1280 x720 . Actual picture of the page will be scaled
* down if necessary to fit specified size .
2020-12-27 00:52:05 +03:00
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* * * NOTE * * Use ` recordVideo ` instead , it takes precedence over ` videosPath ` . Enables video recording for all pages to
* ` videosPath ` directory . If not specified , videos are not recorded . Make sure to await
2021-01-07 07:02:51 +03:00
* [ browserContext . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextclose) for
* videos to be saved .
2020-12-27 00:52:05 +03:00
* /
videosPath? : string ;
/ * *
* Sets a consistent viewport for each page . Defaults to an 1280 x720 viewport . ` null ` disables the default viewport .
* /
viewport? : null | {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
} ;
} ) : Promise < Page > ;
/ * *
* Returns the browser version .
* /
version ( ) : string ;
}
/ * *
2020-12-29 23:12:46 +03:00
* [ ConsoleMessage ] objects are dispatched by page via the
2020-12-31 05:04:51 +03:00
* [ page . on ( 'console' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonconsole) event.
2020-12-27 00:52:05 +03:00
* /
export interface ConsoleMessage {
args ( ) : Array < JSHandle > ;
location ( ) : {
/ * *
2020-12-27 01:31:41 +03:00
* URL of the resource .
2020-12-27 00:52:05 +03:00
* /
url : string ;
/ * *
* 0 - based line number in the resource .
* /
lineNumber : number ;
/ * *
* 0 - based column number in the resource .
* /
columnNumber : number ;
} ;
text ( ) : string ;
/ * *
2020-12-29 23:12:46 +03:00
* One of the following values : ` 'log' ` , ` 'debug' ` , ` 'info' ` , ` 'error' ` , ` 'warning' ` , ` 'dir' ` , ` 'dirxml' ` , ` 'table' ` ,
* ` 'trace' ` , ` 'clear' ` , ` 'startGroup' ` , ` 'startGroupCollapsed' ` , ` 'endGroup' ` , ` 'assert' ` , ` 'profile' ` , ` 'profileEnd' ` ,
* ` 'count' ` , ` 'timeEnd' ` .
2020-12-27 00:52:05 +03:00
* /
type ( ) : string ;
}
/ * *
2020-12-29 23:12:46 +03:00
* [ Dialog ] objects are dispatched by page via the
2020-12-31 05:04:51 +03:00
* [ page . on ( 'dialog' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageondialog) event.
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of using ` Dialog ` class :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* page . on ( 'dialog' , async dialog = > {
* console . log ( dialog . message ( ) ) ;
* await dialog . dismiss ( ) ;
* await browser . close ( ) ;
* } ) ;
* page . evaluate ( ( ) = > alert ( '1' ) ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface Dialog {
/ * *
* Returns when the dialog has been accepted .
* @param promptText A text to enter in prompt . Does not cause any effects if the dialog ' s ` type ` is not prompt . Optional .
* /
accept ( promptText? : string ) : Promise < void > ;
/ * *
* If dialog is prompt , returns default prompt value . Otherwise , returns empty string .
* /
defaultValue ( ) : string ;
/ * *
* Returns when the dialog has been dismissed .
* /
dismiss ( ) : Promise < void > ;
/ * *
* A message displayed in the dialog .
* /
message ( ) : string ;
/ * *
* Returns dialog ' s type , can be one of ` alert ` , ` beforeunload ` , ` confirm ` or ` prompt ` .
* /
type ( ) : string ;
}
/ * *
2020-12-29 23:12:46 +03:00
* [ Download ] objects are dispatched by page via the
2020-12-31 05:04:51 +03:00
* [ page . on ( 'download' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageondownload) event.
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* All the downloaded files belonging to the browser context are deleted when the browser context is closed . All downloaded
* files are deleted when the browser closes .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Download event is emitted once the download starts . Download path becomes available once download completes :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ download ] = await Promise . all ( [
* page . waitForEvent ( 'download' ) , // wait for download to start
* page . click ( 'a' )
* ] ) ;
* // wait for download to complete
* const path = await download . path ( ) ;
* . . .
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Browser context * * must * * be created with the ` acceptDownloads ` set to ` true ` when user needs access to the
* downloaded content . If ` acceptDownloads ` is not set or set to ` false ` , download events are emitted , but the actual
* download is not performed and user has no access to the downloaded files .
2020-12-27 00:52:05 +03:00
* /
export interface Download {
/ * *
* Returns readable stream for current download or ` null ` if download failed .
* /
createReadStream ( ) : Promise < null | Readable > ;
/ * *
* Deletes the downloaded file .
* /
delete ( ) : Promise < void > ;
/ * *
* Returns download error if any .
* /
failure ( ) : Promise < null | string > ;
/ * *
* Returns path to the downloaded file in case of successful download .
* /
path ( ) : Promise < null | string > ;
/ * *
* Saves the download to a user - specified path .
* @param path Path where the download should be saved .
* /
saveAs ( path : string ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns suggested filename for this download . It is typically computed by the browser from the
* [ ` Content-Disposition ` ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) response header
* or the ` download ` attribute . See the spec on [ whatwg ] ( https : //html.spec.whatwg.org/#downloading-resources). Different
* browsers can use different logic for computing it .
2020-12-27 00:52:05 +03:00
* /
suggestedFilename ( ) : string ;
/ * *
* Returns downloaded url .
* /
url ( ) : string ;
}
/ * *
* When browser context is created with the ` videosPath ` option , each page has a video object associated with it .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* console . log ( await page . video ( ) . path ( ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface Video {
/ * *
2020-12-29 23:12:46 +03:00
* Returns the file system path this video will be recorded to . The video is guaranteed to be written to the filesystem
* upon closing the browser context .
2020-12-27 00:52:05 +03:00
* /
path ( ) : Promise < string > ;
}
/ * *
2020-12-29 23:12:46 +03:00
* [ FileChooser ] objects are dispatched by the page in the
2020-12-31 05:04:51 +03:00
* [ page . on ( 'filechooser' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonfilechooser) event.
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'filechooser' , async ( fileChooser ) = > {
* await fileChooser . setFiles ( '/tmp/myfile.pdf' ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface FileChooser {
/ * *
* Returns input element associated with this file chooser .
* /
element ( ) : ElementHandle ;
/ * *
* Returns whether this file chooser accepts multiple files .
* /
isMultiple ( ) : boolean ;
/ * *
* Returns page this file chooser belongs to .
* /
page ( ) : Page ;
/ * *
2020-12-29 23:12:46 +03:00
* Sets the value of the file input this chooser is associated with . If some of the ` filePaths ` are relative paths , then
* they are resolved relative to the the current working directory . For empty array , clears the selected files .
2020-12-27 00:52:05 +03:00
* @param files
* @param options
* /
setFiles ( files : string | Array < string > | {
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] name * * required * *
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] type * * required * *
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
* File content * * required * *
* /
buffer : Buffer ;
} | Array < {
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] name * * required * *
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2020-12-28 18:03:09 +03:00
* [ File ] type * * required * *
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
* File content * * required * *
* /
buffer : Buffer ;
} > , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading . You can
* opt out of waiting via setting this flag . You would only need this option in the exceptional cases such as navigating to
* inaccessible pages . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
noWaitAfter? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
}
/ * *
2020-12-29 23:12:46 +03:00
* Keyboard provides an api for managing a virtual keyboard . The high level api is
2021-01-07 07:02:51 +03:00
* [ keyboard . type ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardtype), which takes raw
* characters and generates proper keydown , keypress / input , and keyup events on your page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* For finer control , you can use
2021-01-07 07:02:51 +03:00
* [ keyboard . down ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboarddown),
* [ keyboard . up ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardup), and
* [ keyboard . insertText ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardinserttext) to manually
* fire events as if they were generated from a real keyboard .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of holding down ` Shift ` in order to select and delete some text :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . keyboard . type ( 'Hello World!' ) ;
* await page . keyboard . press ( 'ArrowLeft' ) ;
*
* await page . keyboard . down ( 'Shift' ) ;
* for ( let i = 0 ; i < ' World' . length ; i ++ )
* await page . keyboard . press ( 'ArrowLeft' ) ;
* await page . keyboard . up ( 'Shift' ) ;
*
* await page . keyboard . press ( 'Backspace' ) ;
* // Result text will end up saying 'Hello!'
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of pressing uppercase ` A `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . keyboard . press ( 'Shift+KeyA' ) ;
* // or
* await page . keyboard . press ( 'Shift+A' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example to trigger select - all with the keyboard
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // on Windows and Linux
* await page . keyboard . press ( 'Control+A' ) ;
* // on macOS
* await page . keyboard . press ( 'Meta+A' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface Keyboard {
/ * *
* Dispatches a ` keydown ` event .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
2020-12-28 18:03:09 +03:00
*
2020-12-27 01:31:41 +03:00
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If ` key ` is a modifier key , ` Shift ` , ` Meta ` , ` Control ` , or ` Alt ` , subsequent key presses will be sent with that modifier
* active . To release the modifier key , use
2021-01-07 07:02:51 +03:00
* [ keyboard . up ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardup).
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* After the key is pressed once , subsequent calls to
2021-01-07 07:02:51 +03:00
* [ keyboard . down ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboarddown) will have
2020-12-29 23:12:46 +03:00
* [ repeat ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat) set to true. To release the key, use
2021-01-07 07:02:51 +03:00
* [ keyboard . up ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardup).
2020-12-27 00:52:05 +03:00
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Modifier keys DO influence ` keyboard.down ` . Holding down ` Shift ` will type the text in upper case .
2020-12-27 00:52:05 +03:00
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* /
down ( key : string ) : Promise < void > ;
/ * *
* Dispatches only ` input ` event , does not emit the ` keydown ` , ` keyup ` or ` keypress ` events .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . keyboard . insertText ( '嗨' ) ;
* ` ` `
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Modifier keys DO NOT effect ` keyboard.insertText ` . Holding down ` Shift ` will not type the text in upper case .
2020-12-27 00:52:05 +03:00
* @param text Sets input to the specified text value .
* /
insertText ( text : string ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* ` key ` can specify the intended [ keyboardEvent . key ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key)
* value or a single character to generate the text for . A superset of the ` key ` values can be found
* [ here ] ( https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* ` F1 ` - ` F12 ` , ` Digit0 ` - ` Digit9 ` , ` KeyA ` - ` KeyZ ` , ` Backquote ` , ` Minus ` , ` Equal ` , ` Backslash ` , ` Backspace ` , ` Tab ` ,
* ` Delete ` , ` Escape ` , ` ArrowDown ` , ` End ` , ` Enter ` , ` Home ` , ` Insert ` , ` PageDown ` , ` PageUp ` , ` ArrowRight ` , ` ArrowUp ` , etc .
2020-12-28 18:03:09 +03:00
*
2020-12-27 01:31:41 +03:00
* Following modification shortcuts are also supported : ` Shift ` , ` Control ` , ` Alt ` , ` Meta ` , ` ShiftLeft ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Holding down ` Shift ` will type the text that corresponds to the ` key ` in the upper case .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If ` key ` is a single character , it is case - sensitive , so the values ` a ` and ` A ` will generate different respective
* texts .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Shortcuts such as ` key: "Control+o" ` or ` key: "Control+Shift+T" ` are supported as well . When speficied with the
* modifier , modifier is pressed and being held while the subsequent key is being pressed .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const page = await browser . newPage ( ) ;
* await page . goto ( 'https://keycode.info' ) ;
* await page . keyboard . press ( 'A' ) ;
* await page . screenshot ( { path : 'A.png' } ) ;
* await page . keyboard . press ( 'ArrowLeft' ) ;
* await page . screenshot ( { path : 'ArrowLeft.png' } ) ;
* await page . keyboard . press ( 'Shift+O' ) ;
* await page . screenshot ( { path : 'O.png' } ) ;
* await browser . close ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-07 07:02:51 +03:00
* Shortcut for [ keyboard . down ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboarddown) and
* [ keyboard . up ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardup).
2020-12-27 00:52:05 +03:00
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* @param options
* /
press ( key : string , options ? : {
/ * *
* Time to wait between ` keydown ` and ` keyup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
} ) : Promise < void > ;
/ * *
* Sends a ` keydown ` , ` keypress ` / ` input ` , and ` keyup ` event for each character in the text .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* To press a special key , like ` Control ` or ` ArrowDown ` , use
2021-01-07 07:02:51 +03:00
* [ keyboard . press ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#keyboardpress).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . keyboard . type ( 'Hello' ) ; // Types instantly
* await page . keyboard . type ( 'World' , { delay : 100 } ) ; // Types slower, like a user
* ` ` `
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Modifier keys DO NOT effect ` keyboard.type ` . Holding down ` Shift ` will not type the text in upper case .
2020-12-27 00:52:05 +03:00
* @param text A text to type into a focused element .
* @param options
* /
type ( text : string , options ? : {
/ * *
* Time to wait between key presses in milliseconds . Defaults to 0 .
* /
delay? : number ;
} ) : Promise < void > ;
/ * *
* Dispatches a ` keyup ` event .
* @param key Name of the key to press or a character to generate , such as ` ArrowLeft ` or ` a ` .
* /
up ( key : string ) : Promise < void > ;
}
/ * *
* The Mouse class operates in main - frame CSS pixels relative to the top - left corner of the viewport .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Every ` page ` object has its own Mouse , accessible with
2020-12-31 05:04:51 +03:00
* [ page . mouse ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagemouse).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // Using ‘ page.mouse’ to trace a 100x100 square.
* await page . mouse . move ( 0 , 0 ) ;
* await page . mouse . down ( ) ;
* await page . mouse . move ( 0 , 100 ) ;
* await page . mouse . move ( 100 , 100 ) ;
* await page . mouse . move ( 100 , 0 ) ;
* await page . mouse . move ( 0 , 0 ) ;
* await page . mouse . up ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface Mouse {
/ * *
2021-01-07 07:02:51 +03:00
* Shortcut for [ mouse . move ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#mousemove),
* [ mouse . down ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#mousedown),
* [ mouse . up ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#mouseup).
2020-12-27 00:52:05 +03:00
* @param x
* @param y
* @param options
* /
click ( x : number , y : number , options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-28 18:03:09 +03:00
* defaults to 1 . See [ UIEvent . detail ] .
2020-12-27 00:52:05 +03:00
* /
clickCount? : number ;
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
} ) : Promise < void > ;
/ * *
2021-01-07 07:02:51 +03:00
* Shortcut for [ mouse . move ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#mousemove),
* [ mouse . down ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#mousedown),
* [ mouse . up ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#mouseup),
* [ mouse . down ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#mousedown) and
* [ mouse . up ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#mouseup).
2020-12-27 00:52:05 +03:00
* @param x
* @param y
* @param options
* /
dblclick ( x : number , y : number , options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
* Time to wait between ` mousedown ` and ` mouseup ` in milliseconds . Defaults to 0 .
* /
delay? : number ;
} ) : Promise < void > ;
/ * *
* Dispatches a ` mousedown ` event .
* @param options
* /
down ( options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-28 18:03:09 +03:00
* defaults to 1 . See [ UIEvent . detail ] .
2020-12-27 00:52:05 +03:00
* /
clickCount? : number ;
} ) : Promise < void > ;
/ * *
* Dispatches a ` mousemove ` event .
* @param x
* @param y
* @param options
* /
move ( x : number , y : number , options ? : {
/ * *
* defaults to 1 . Sends intermediate ` mousemove ` events .
* /
steps? : number ;
} ) : Promise < void > ;
/ * *
* Dispatches a ` mouseup ` event .
* @param options
* /
up ( options ? : {
/ * *
* Defaults to ` left ` .
* /
2020-12-28 18:03:09 +03:00
button ? : "left" | "right" | "middle" ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-28 18:03:09 +03:00
* defaults to 1 . See [ UIEvent . detail ] .
2020-12-27 00:52:05 +03:00
* /
clickCount? : number ;
} ) : Promise < void > ;
}
/ * *
2020-12-29 23:12:46 +03:00
* The Touchscreen class operates in main - frame CSS pixels relative to the top - left corner of the viewport . Methods on the
* touchscreen can only be used in browser contexts that have been intialized with ` hasTouch ` set to true .
2020-12-27 00:52:05 +03:00
* /
export interface Touchscreen {
/ * *
* Dispatches a ` touchstart ` and ` touchend ` event with a single touch at the position ( ` x ` , ` y ` ) .
* @param x
* @param y
* /
tap ( x : number , y : number ) : Promise < void > ;
}
/ * *
2020-12-28 18:03:09 +03:00
* Whenever the page sends a request for a network resource the following sequence of events are emitted by [ Page ] :
2020-12-31 05:04:51 +03:00
* - [ page . on ( 'request' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequest) emitted when the
2020-12-29 23:12:46 +03:00
* request is issued by the page .
2020-12-31 05:04:51 +03:00
* - [ page . on ( 'response' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonresponse) emitted
2020-12-29 23:12:46 +03:00
* when / if the response status and headers are received for the request .
2020-12-31 05:04:51 +03:00
* - [ page . on ( 'requestfinished' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfinished)
2020-12-29 23:12:46 +03:00
* emitted when the response body is downloaded and the request is complete .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If request fails at some point , then instead of ` 'requestfinished' ` event ( and possibly instead of 'response' event ) ,
2020-12-31 05:04:51 +03:00
* the [ page . on ( 'requestfailed' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonrequestfailed)
2020-12-29 23:12:46 +03:00
* event is emitted .
2020-12-27 00:52:05 +03:00
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request
* will complete with ` 'requestfinished' ` event .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* If request gets a 'redirect' response , the request is successfully finished with the 'requestfinished' event , and a new
* request is issued to a redirected url .
2020-12-27 00:52:05 +03:00
* /
export interface Request {
/ * *
* The method returns ` null ` unless this request has failed , as reported by ` requestfailed ` event .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* Example of logging of all the failed requests :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* page . on ( 'requestfailed' , request = > {
* console . log ( request . url ( ) + ' ' + request . failure ( ) . errorText ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
failure ( ) : null | {
/ * *
* Human - readable error message , e . g . ` 'net::ERR_FAILED' ` .
* /
errorText : string ;
} ;
/ * *
2020-12-28 18:03:09 +03:00
* Returns the [ Frame ] that initiated this request .
2020-12-27 00:52:05 +03:00
* /
frame ( ) : Frame ;
/ * *
* An object with HTTP headers associated with the request . All header names are lower - case .
* /
headers ( ) : { [ key : string ] : string ; } ;
/ * *
* Whether this request is driving frame ' s navigation .
* /
isNavigationRequest ( ) : boolean ;
/ * *
* Request ' s method ( GET , POST , etc . )
* /
method ( ) : string ;
/ * *
* Request ' s post body , if any .
* /
postData ( ) : null | string ;
/ * *
* Request ' s post body in a binary form , if any .
* /
postDataBuffer ( ) : null | Buffer ;
/ * *
* Returns parsed request ' s body for ` form-urlencoded ` and JSON as a fallback if any .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When the response is ` application/x-www-form-urlencoded ` then a key / value object of the values will be returned .
* Otherwise it will be parsed as JSON .
2020-12-27 00:52:05 +03:00
* /
postDataJSON ( ) : null | Object ;
/ * *
* Request that was redirected by the server to this one , if any .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* When the server responds with a redirect , Playwright creates a new [ Request ] object . The two requests are connected by
* ` redirectedFrom() ` and ` redirectedTo() ` methods . When multiple server redirects has happened , it is possible to
* construct the whole redirect chain by repeatedly calling ` redirectedFrom() ` .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* For example , if the website ` http://example.com ` redirects to ` https://example.com ` :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const response = await page . goto ( 'http://example.com' ) ;
* console . log ( response . request ( ) . redirectedFrom ( ) . url ( ) ) ; // 'http://example.com'
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* If the website ` https://google.com ` has no redirects :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const response = await page . goto ( 'https://google.com' ) ;
* console . log ( response . request ( ) . redirectedFrom ( ) ) ; // null
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
redirectedFrom ( ) : null | Request ;
/ * *
* New request issued by the browser if the server responded with redirect .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* This method is the opposite of
2021-01-07 07:02:51 +03:00
* [ request . redirectedFrom ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#requestredirectedfrom):
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* console . log ( request . redirectedFrom ( ) . redirectedTo ( ) === request ) ; // true
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
redirectedTo ( ) : null | Request ;
/ * *
2020-12-29 23:12:46 +03:00
* Contains the request ' s resource type as it was perceived by the rendering engine . ResourceType will be one of the
* following : ` document ` , ` stylesheet ` , ` image ` , ` media ` , ` font ` , ` script ` , ` texttrack ` , ` xhr ` , ` fetch ` , ` eventsource ` ,
* ` websocket ` , ` manifest ` , ` other ` .
2020-12-27 00:52:05 +03:00
* /
resourceType ( ) : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Returns the matching [ Response ] object , or ` null ` if the response was not received due to error .
2020-12-27 00:52:05 +03:00
* /
response ( ) : Promise < null | Response > ;
/ * *
2020-12-29 23:12:46 +03:00
* Returns resource timing information for given request . Most of the timing values become available upon the response ,
* ` responseEnd ` becomes available when request finishes . Find more information at
* [ Resource Timing API ] ( https : //developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming).
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ request ] = await Promise . all ( [
* page . waitForEvent ( 'requestfinished' ) ,
* page . goto ( httpsServer . EMPTY_PAGE )
* ] ) ;
* console . log ( request . timing ( ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
timing ( ) : {
/ * *
* Request start time in milliseconds elapsed since January 1 , 1970 00 :00 : 00 UTC
* /
startTime : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Time immediately before the browser starts the domain name lookup for the resource . The value is given in milliseconds
* relative to ` startTime ` , - 1 if not available .
2020-12-27 00:52:05 +03:00
* /
domainLookupStart : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Time immediately after the browser starts the domain name lookup for the resource . The value is given in milliseconds
* relative to ` startTime ` , - 1 if not available .
2020-12-27 00:52:05 +03:00
* /
domainLookupEnd : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Time immediately before the user agent starts establishing the connection to the server to retrieve the resource . The
* value is given in milliseconds relative to ` startTime ` , - 1 if not available .
2020-12-27 00:52:05 +03:00
* /
connectStart : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Time immediately before the browser starts the handshake process to secure the current connection . The value is given in
* milliseconds relative to ` startTime ` , - 1 if not available .
2020-12-27 00:52:05 +03:00
* /
secureConnectionStart : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Time immediately before the user agent starts establishing the connection to the server to retrieve the resource . The
* value is given in milliseconds relative to ` startTime ` , - 1 if not available .
2020-12-27 00:52:05 +03:00
* /
connectEnd : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Time immediately before the browser starts requesting the resource from the server , cache , or local resource . The value
* is given in milliseconds relative to ` startTime ` , - 1 if not available .
2020-12-27 00:52:05 +03:00
* /
requestStart : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Time immediately after the browser starts requesting the resource from the server , cache , or local resource . The value
* is given in milliseconds relative to ` startTime ` , - 1 if not available .
2020-12-27 00:52:05 +03:00
* /
responseStart : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Time immediately after the browser receives the last byte of the resource or immediately before the transport connection
* is closed , whichever comes first . The value is given in milliseconds relative to ` startTime ` , - 1 if not available .
2020-12-27 00:52:05 +03:00
* /
responseEnd : number ;
} ;
/ * *
* URL of the request .
* /
url ( ) : string ;
}
/ * *
2020-12-28 18:03:09 +03:00
* [ Response ] class represents responses which are received by page .
2020-12-27 00:52:05 +03:00
* /
export interface Response {
/ * *
* Returns the buffer with response body .
* /
body ( ) : Promise < Buffer > ;
/ * *
* Waits for this response to finish , returns failure error if request failed .
* /
finished ( ) : Promise < null | Error > ;
/ * *
2020-12-28 18:03:09 +03:00
* Returns the [ Frame ] that initiated this response .
2020-12-27 00:52:05 +03:00
* /
frame ( ) : Frame ;
/ * *
* Returns the object with HTTP headers associated with the response . All header names are lower - case .
* /
headers ( ) : { [ key : string ] : string ; } ;
/ * *
* Returns the JSON representation of response body .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* This method will throw if the response body is not parsable via ` JSON.parse ` .
* /
json ( ) : Promise < Serializable > ;
/ * *
* Contains a boolean stating whether the response was successful ( status in the range 200 - 299 ) or not .
* /
ok ( ) : boolean ;
/ * *
2020-12-28 18:03:09 +03:00
* Returns the matching [ Request ] object .
2020-12-27 00:52:05 +03:00
* /
request ( ) : Request ;
/ * *
* Contains the status code of the response ( e . g . , 200 for a success ) .
* /
status ( ) : number ;
/ * *
* Contains the status text of the response ( e . g . usually an "OK" for a success ) .
* /
statusText ( ) : string ;
/ * *
* Returns the text representation of response body .
* /
text ( ) : Promise < string > ;
/ * *
* Contains the URL of the response .
* /
url ( ) : string ;
}
/ * *
2021-01-02 02:17:27 +03:00
* Selectors can be used to install custom selector engines . See
* [ Working with selectors ] ( https : //github.com/microsoft/playwright/blob/master/docs/selectors.md#working-with-selectors) for more information.
2020-12-27 00:52:05 +03:00
* /
export interface Selectors {
/ * *
* An example of registering selector engine that queries elements based on a tag name :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { selectors , firefox } = require ( 'playwright' ) ; // Or 'chromium' or 'webkit'.
*
* ( async ( ) = > {
* // Must be a function that evaluates to a selector engine instance.
* const createTagNameEngine = ( ) = > ( {
* // Returns the first element matching given selector in the root's subtree.
* query ( root , selector ) {
* return root . querySelector ( selector ) ;
* } ,
*
* // Returns all elements matching given selector in the root's subtree.
* queryAll ( root , selector ) {
* return Array . from ( root . querySelectorAll ( selector ) ) ;
* }
* } ) ;
*
* // Register the engine. Selectors will be prefixed with "tag=".
* await selectors . register ( 'tag' , createTagNameEngine ) ;
*
* const browser = await firefox . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . setContent ( ` <div><button>Click me</button></div> ` ) ;
*
* // Use the selector prefixed with its name.
* const button = await page . $ ( 'tag=button' ) ;
* // Combine it with other selector engines.
* await page . click ( 'tag=div >> text="Click me"' ) ;
* // Can use it in any methods supporting selectors.
* const buttonCount = await page . $ $eval ( 'tag=button' , buttons = > buttons . length ) ;
*
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param name Name that is used in selectors as a prefix , e . g . ` {name: 'foo'} ` enables ` foo=myselectorbody ` selectors . May only contain ` [a-zA-Z0-9_] ` characters .
* @param script Script that evaluates to a selector engine instance .
* @param options
* /
register ( name : string , script : Function | string | {
/ * *
2020-12-29 23:12:46 +03:00
* Path to the JavaScript file . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . Optional .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2020-12-28 18:03:09 +03:00
* Raw script content . Optional .
2020-12-27 00:52:05 +03:00
* /
content? : string ;
} , options ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Whether to run this selector engine in isolated JavaScript environment . This environment has access to the same DOM , but
* not any JavaScript objects from the frame ' s scripts . Defaults to ` false ` . Note that running as a content script is not
* guaranteed when this engine is used together with other registered engines .
2020-12-27 00:52:05 +03:00
* /
contentScript? : boolean ;
} ) : Promise < void > ;
}
/ * *
2020-12-29 23:12:46 +03:00
* Whenever a network route is set up with
2021-01-07 07:02:51 +03:00
* [ page . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageroute) or
* [ browserContext . route ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextroute), the
* ` Route ` object allows to handle the route .
2020-12-27 00:52:05 +03:00
* /
export interface Route {
/ * *
* Aborts the route ' s request .
2020-12-27 01:31:41 +03:00
* @param errorCode Optional error code . Defaults to ` failed ` , could be one of the following : - ` 'aborted' ` - An operation was aborted ( due to user action )
* - ` 'accessdenied' ` - Permission to access a resource , other than the network , was denied
2020-12-29 23:12:46 +03:00
* - ` 'addressunreachable' ` - The IP address is unreachable . This usually means that there is no route to the specified
* host or network .
2020-12-27 01:31:41 +03:00
* - ` 'blockedbyclient' ` - The client chose to block the request .
2020-12-29 23:12:46 +03:00
* - ` 'blockedbyresponse' ` - The request failed because the response was delivered along with requirements which are not
* met ( 'X-Frame-Options' and 'Content-Security-Policy' ancestor checks , for instance ) .
2020-12-27 01:31:41 +03:00
* - ` 'connectionaborted' ` - A connection timed out as a result of not receiving an ACK for data sent .
* - ` 'connectionclosed' ` - A connection was closed ( corresponding to a TCP FIN ) .
* - ` 'connectionfailed' ` - A connection attempt failed .
* - ` 'connectionrefused' ` - A connection attempt was refused .
* - ` 'connectionreset' ` - A connection was reset ( corresponding to a TCP RST ) .
* - ` 'internetdisconnected' ` - The Internet connection has been lost .
* - ` 'namenotresolved' ` - The host name could not be resolved .
* - ` 'timedout' ` - An operation timed out .
* - ` 'failed' ` - A generic failure occurred .
2020-12-27 00:52:05 +03:00
* /
abort ( errorCode? : string ) : Promise < void > ;
/ * *
* Continues route ' s request with optional overrides .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . route ( '**\/*' , ( route , request ) = > {
* // Override headers
* const headers = {
* . . . request . headers ( ) ,
* foo : 'bar' , // set "foo" header
* origin : undefined , // remove "origin" header
* } ;
* route . continue ( { headers } ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param overrides Optional request overrides , can override following properties :
* /
continue ( overrides ? : {
/ * *
* If set changes the request URL . New URL must have same protocol as original one .
* /
url? : string ;
/ * *
* If set changes the request method ( e . g . GET or POST )
* /
method? : string ;
/ * *
* If set changes the post data of request
* /
postData? : string | Buffer ;
/ * *
* If set changes the request HTTP headers . Header values will be converted to a string .
* /
headers ? : { [ key : string ] : string ; } ;
} ) : Promise < void > ;
/ * *
* Fulfills route ' s request with given response .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of fulfilling all requests with 404 responses :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . route ( '**\/*' , route = > {
* route . fulfill ( {
* status : 404 ,
* contentType : 'text/plain' ,
* body : 'Not Found!'
* } ) ;
* } ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of serving static file :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* await page . route ( '**\/xhr_endpoint' , route = > route . fulfill ( { path : 'mock_data.json' } ) ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* @param response Response that will fulfill this route ' s request .
* /
fulfill ( response : {
/ * *
* Response status code , defaults to ` 200 ` .
* /
status? : number ;
/ * *
* Optional response headers . Header values will be converted to a string .
* /
headers ? : { [ key : string ] : string ; } ;
/ * *
* If set , equals to setting ` Content-Type ` response header .
* /
contentType? : string ;
/ * *
* Optional response body .
* /
body? : string | Buffer ;
/ * *
2020-12-29 23:12:46 +03:00
* Optional file path to respond with . The content type will be inferred from file extension . If ` path ` is a relative path ,
* then it is resolved relative to the current working directory .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
} ) : Promise < void > ;
/ * *
* A request to be routed .
* /
request ( ) : Request ;
}
/ * *
2020-12-28 18:03:09 +03:00
* The [ WebSocket ] class represents websocket connections in the page .
2020-12-27 00:52:05 +03:00
* /
export interface WebSocket {
/ * *
* Fired when the websocket closes .
* /
on ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Fired when the websocket recieves a frame .
* /
on ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket sends a frame .
* /
on ( event : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket has an error .
* /
on ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
/ * *
* Fired when the websocket closes .
* /
once ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Fired when the websocket recieves a frame .
* /
once ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket sends a frame .
* /
once ( event : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket has an error .
* /
once ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
/ * *
* Fired when the websocket closes .
* /
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Fired when the websocket recieves a frame .
* /
addListener ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket sends a frame .
* /
addListener ( event : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket has an error .
* /
addListener ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
/ * *
* Fired when the websocket closes .
* /
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Fired when the websocket recieves a frame .
* /
removeListener ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket sends a frame .
* /
removeListener ( event : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket has an error .
* /
removeListener ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
/ * *
* Fired when the websocket closes .
* /
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Fired when the websocket recieves a frame .
* /
off ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket sends a frame .
* /
off ( event : 'framesent' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
/ * *
* Fired when the websocket has an error .
* /
off ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
/ * *
* Indicates that the web socket has been closed .
* /
isClosed ( ) : boolean ;
/ * *
* Contains the URL of the WebSocket .
* /
url ( ) : string ;
/ * *
* Fired when the websocket closes .
* /
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( ) = > boolean , timeout? : number } | ( ( ) = > boolean ) ) : Promise < void > ;
/ * *
* Fired when the websocket recieves a frame .
* /
waitForEvent ( event : 'framereceived' , optionsOrPredicate ? : { predicate ? : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > boolean , timeout? : number } | ( ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > boolean ) ) : Promise < {
/ * *
* frame payload
* /
payload : string | Buffer ;
} > ;
/ * *
* Fired when the websocket sends a frame .
* /
waitForEvent ( event : 'framesent' , optionsOrPredicate ? : { predicate ? : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > boolean , timeout? : number } | ( ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > boolean ) ) : Promise < {
/ * *
* frame payload
* /
payload : string | Buffer ;
} > ;
/ * *
* Fired when the websocket has an error .
* /
waitForEvent ( event : 'socketerror' , optionsOrPredicate ? : { predicate ? : ( string : String ) = > boolean , timeout? : number } | ( ( string : String ) = > boolean ) ) : Promise < String > ;
}
export interface BrowserServer {
/ * *
* Emitted when the browser server closes .
* /
on ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when the browser server closes .
* /
once ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when the browser server closes .
* /
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when the browser server closes .
* /
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Emitted when the browser server closes .
* /
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* Closes the browser gracefully and makes sure the process is terminated .
* /
close ( ) : Promise < void > ;
/ * *
* Kills the browser process and waits for the process to exit .
* /
kill ( ) : Promise < void > ;
/ * *
* Spawned browser application process .
* /
process ( ) : ChildProcess ;
/ * *
* Browser websocket url .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* Browser websocket endpoint which can be used as an argument to
2021-01-07 07:02:51 +03:00
* [ browserType . connect ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsertypeconnect) to
* establish connection to the browser .
2020-12-27 00:52:05 +03:00
* /
wsEndpoint ( ) : string ;
}
/ * *
* Playwright generates a lot of logs and they are accessible via the pluggable logger sink .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
*
* ( async ( ) = > {
* const browser = await chromium . launch ( {
* logger : {
* isEnabled : ( name , severity ) = > name === 'browser' ,
* log : ( name , severity , message , args ) = > console . log ( ` ${ name } ${ message } ` )
* }
* } ) ;
* . . .
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface Logger {
/ * *
* Determines whether sink is interested in the logger with the given name and severity .
* @param name logger name
* @param severity
* /
2020-12-28 18:03:09 +03:00
isEnabled ( name : string , severity : "verbose" | "info" | "warning" | "error" ) : boolean ;
2020-12-27 00:52:05 +03:00
/ * *
* @param name logger name
* @param severity
* @param message log message format
* @param args message arguments
* @param hints optional formatting hints
* /
2020-12-28 18:03:09 +03:00
log ( name : string , severity : "verbose" | "info" | "warning" | "error" , message : string | Error , args : Array < Object > , hints : {
2020-12-27 00:52:05 +03:00
/ * *
2020-12-27 01:31:41 +03:00
* Optional preferred logger color .
2020-12-27 00:52:05 +03:00
* /
color? : string ;
} ) : void ;
}
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ BrowserContext ]
*
2020-12-27 00:52:05 +03:00
* Chromium - specific features including background pages , service worker support , etc .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const backgroundPage = await context . waitForEvent ( 'backgroundpage' ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface ChromiumBrowserContext extends BrowserContext {
/ * *
* Emitted when new background page is created in the context .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Only works with persistent context .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new service worker is created in the context .
* /
on ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
on ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
on ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new background page is created in the context .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Only works with persistent context .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new service worker is created in the context .
* /
once ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
once ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
once ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new background page is created in the context .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Only works with persistent context .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new service worker is created in the context .
* /
addListener ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
addListener ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new background page is created in the context .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Only works with persistent context .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new service worker is created in the context .
* /
removeListener ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
removeListener ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new background page is created in the context .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Only works with persistent context .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new service worker is created in the context .
* /
off ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
off ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
* All existing background pages in the context .
* /
backgroundPages ( ) : Array < Page > ;
/ * *
* Returns the newly created session .
* @param page Page to create new session for .
* /
newCDPSession ( page : Page ) : Promise < CDPSession > ;
/ * *
* All existing service workers in the context .
* /
serviceWorkers ( ) : Array < Worker > ;
/ * *
* Emitted when new background page is created in the context .
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * Only works with persistent context .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'backgroundpage' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean , timeout? : number } | ( ( page : Page ) = > boolean ) ) : Promise < Page > ;
/ * *
* Emitted when new service worker is created in the context .
* /
waitForEvent ( event : 'serviceworker' , optionsOrPredicate ? : { predicate ? : ( worker : Worker ) = > boolean , timeout? : number } | ( ( worker : Worker ) = > boolean ) ) : Promise < Worker > ;
2020-12-27 01:31:41 +03:00
/ * *
* Emitted when Browser context gets closed . This might happen because of one of the following :
* - Browser context is closed .
* - Browser application is closed or crashed .
2021-01-07 07:02:51 +03:00
* - The [ browser . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browserclose) method was
2020-12-29 23:12:46 +03:00
* called .
2020-12-27 01:31:41 +03:00
* /
2020-12-27 00:52:05 +03:00
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( ) = > boolean , timeout? : number } | ( ( ) = > boolean ) ) : Promise < void > ;
/ * *
2020-12-29 23:12:46 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
* also fire for popup pages . See also
2020-12-31 05:04:51 +03:00
* [ page . on ( 'popup' ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageonpopup) to receive events about
* popups relevant to a specific page .
2020-12-28 18:03:09 +03:00
*
2020-12-29 23:12:46 +03:00
* The earliest moment that page is available is when it has navigated to the initial url . For example , when opening a
* popup with ` window.open('http://example.com') ` , this event will fire when the network request to "http://example.com" is
* done and its response has started loading in the popup .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Use
2021-01-07 07:02:51 +03:00
* [ page . waitForLoadState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagewaitforloadstate) to wait
* until the page gets to a particular state ( you should not need it in most cases ) .
2020-12-27 00:52:05 +03:00
* /
waitForEvent ( event : 'page' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean , timeout? : number } | ( ( page : Page ) = > boolean ) ) : Promise < Page > ;
}
/ * *
* Coverage gathers information about parts of JavaScript and CSS that were used by the page .
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* An example of using JavaScript coverage to produce Istambul report for page load :
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ;
* const v8toIstanbul = require ( 'v8-to-istanbul' ) ;
*
* ( async ( ) = > {
* const browser = await chromium . launch ( ) ;
* const page = await browser . newPage ( ) ;
* await page . coverage . startJSCoverage ( ) ;
* await page . goto ( 'https://chromium.org' ) ;
* const coverage = await page . coverage . stopJSCoverage ( ) ;
* for ( const entry of coverage ) {
* const converter = new v8toIstanbul ( '' , 0 , { source : entry.source } ) ;
* await converter . load ( ) ;
* converter . applyCoverage ( entry . functions ) ;
* console . log ( JSON . stringify ( converter . toIstanbul ( ) ) ) ;
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2020-12-27 00:52:05 +03:00
* /
export interface ChromiumCoverage {
/ * *
* Returns coverage is started
* @param options
* /
startCSSCoverage ( options ? : {
/ * *
* Whether to reset coverage on every navigation . Defaults to ` true ` .
* /
resetOnNavigation? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns coverage is started
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * Anonymous scripts are ones that don ' t have an associated url . These are scripts that are dynamically created
* on the page using ` eval ` or ` new Function ` . If ` reportAnonymousScripts ` is set to ` true ` , anonymous scripts will have
* ` __playwright_evaluation_script__ ` as their URL .
2020-12-27 00:52:05 +03:00
* @param options
* /
startJSCoverage ( options ? : {
/ * *
* Whether anonymous scripts generated by the page should be reported . Defaults to ` false ` .
* /
reportAnonymousScripts? : boolean ;
/ * *
* Whether to reset coverage on every navigation . Defaults to ` true ` .
* /
resetOnNavigation? : boolean ;
} ) : Promise < void > ;
/ * *
* Returns the array of coverage reports for all stylesheets
*
2020-12-27 01:31:41 +03:00
* > * * NOTE * * CSS Coverage doesn ' t include dynamically injected style tags without sourceURLs .
2020-12-27 00:52:05 +03:00
* /
stopCSSCoverage ( ) : Promise < Array < {
/ * *
* StyleSheet URL
* /
url : string ;
/ * *
* StyleSheet content , if available .
* /
text? : string ;
/ * *
* StyleSheet ranges that were used . Ranges are sorted and non - overlapping .
* /
ranges : Array < {
/ * *
* A start offset in text , inclusive
* /
start : number ;
/ * *
* An end offset in text , exclusive
* /
end : number ;
} > ;
} >> ;
/ * *
* Returns the array of coverage reports for all scripts
*
2020-12-29 23:12:46 +03:00
* > * * NOTE * * JavaScript Coverage doesn ' t include anonymous scripts by default . However , scripts with sourceURLs are
* reported .
2020-12-27 00:52:05 +03:00
* /
stopJSCoverage ( ) : Promise < Array < {
/ * *
* Script URL
* /
url : string ;
/ * *
* Script ID
* /
scriptId : string ;
/ * *
* Script content , if applicable .
* /
source? : string ;
/ * *
* V8 - specific coverage format .
* /
functions : Array < {
functionName : string ;
isBlockCoverage : boolean ;
ranges : Array < {
count : number ;
startOffset : number ;
endOffset : number ;
} > ;
} > ;
} >> ;
}
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ Browser ]
*
2020-12-27 00:52:05 +03:00
* Firefox browser instance does not expose Firefox - specific features .
* /
export interface FirefoxBrowser extends Browser {
}
/ * *
2020-12-28 18:03:09 +03:00
* - extends : [ Browser ]
*
2020-12-27 00:52:05 +03:00
* WebKit browser instance does not expose WebKit - specific features .
* /
export interface WebKitBrowser extends Browser {
}
export interface BrowserContextOptions {
/ * *
* Whether to automatically download all the attachments . Defaults to ` false ` where all the downloads are canceled .
* /
acceptDownloads? : boolean ;
/ * *
* Toggles bypassing page ' s Content - Security - Policy .
* /
bypassCSP? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . See
2021-01-07 07:02:51 +03:00
* [ page . emulateMedia ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pageemulatemedia) for more
* details . Defaults to '`light`' .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
colorScheme ? : "light" | "dark" | "no-preference" ;
2020-12-27 00:52:05 +03:00
/ * *
* Specify device scale factor ( can be thought of as dpr ) . Defaults to ` 1 ` .
* /
deviceScaleFactor? : number ;
/ * *
* An object containing additional HTTP headers to be sent with every request . All header values must be strings .
* /
extraHTTPHeaders ? : { [ key : string ] : string ; } ;
geolocation? : Geolocation ;
/ * *
* Specifies if viewport supports touch events . Defaults to false .
* /
hasTouch? : boolean ;
/ * *
2020-12-28 18:03:09 +03:00
* Credentials for [ HTTP authentication ] ( https : //developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
2020-12-27 00:52:05 +03:00
* /
httpCredentials? : HTTPCredentials ;
/ * *
* Whether to ignore HTTPS errors during navigation . Defaults to ` false ` .
* /
ignoreHTTPSErrors? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Whether the ` meta viewport ` tag is taken into account and touch events are enabled . Defaults to ` false ` . Not supported
* in Firefox .
2020-12-27 00:52:05 +03:00
* /
isMobile? : boolean ;
/ * *
* Whether or not to enable JavaScript in the context . Defaults to ` true ` .
* /
javaScriptEnabled? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Specify user locale , for example ` en-GB ` , ` de-DE ` , etc . Locale will affect ` navigator.language ` value , ` Accept-Language `
* request header value as well as number and date formatting rules .
2020-12-27 00:52:05 +03:00
* /
locale? : string ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Whether to emulate network being offline . Defaults to ` false ` .
* /
offline? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* A list of permissions to grant to all pages in this context . See
2021-01-07 07:02:51 +03:00
* [ browserContext . grantPermissions ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextgrantpermissions)
2020-12-29 23:12:46 +03:00
* for more details .
2020-12-27 00:52:05 +03:00
* /
permissions? : Array < string > ;
/ * *
2020-12-29 23:12:46 +03:00
* Network proxy settings to use with this context . Note that browser needs to be launched with the global proxy for this
* option to work . If all contexts override the proxy , global proxy will be never used and can be any string , for example
* ` launch({ proxy: { server: 'per-context' } }) ` .
2020-12-27 00:52:05 +03:00
* /
proxy ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
2020-12-27 00:52:05 +03:00
* /
server : string ;
/ * *
* Optional coma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Enables [ HAR ] ( http : //www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file. If not
* specified , the HAR is not recorded . Make sure to await
2021-01-07 07:02:51 +03:00
* [ browserContext . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextclose) for the
2020-12-29 23:12:46 +03:00
* HAR to be saved .
2020-12-27 00:52:05 +03:00
* /
recordHar ? : {
/ * *
* Optional setting to control whether to omit request content from the HAR . Defaults to ` false ` .
* /
omitContent? : boolean ;
/ * *
* Path on the filesystem to write the HAR file to .
* /
path : string ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Enables video recording for all pages into ` recordVideo.dir ` directory . If not specified videos are not recorded . Make
* sure to await
2021-01-07 07:02:51 +03:00
* [ browserContext . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextclose) for
* videos to be saved .
2020-12-27 00:52:05 +03:00
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` . If ` viewport ` is not
* configured explicitly the video size defaults to 1280 x720 . Actual picture of each page will be scaled down if necessary
* to fit the specified size .
2020-12-27 00:52:05 +03:00
* /
size ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Populates context with given storage state . This method can be used to initialize context with logged - in information
* obtained via
2021-01-07 07:02:51 +03:00
* [ browserContext . storageState ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextstoragestate).
2020-12-29 23:12:46 +03:00
* Either a path to the file with saved storage , or an object with the following fields :
2020-12-27 00:52:05 +03:00
* /
storageState? : string | {
/ * *
* Optional cookies to set for context
* /
cookies? : Array < {
/ * *
* * * required * *
* /
name : string ;
/ * *
* * * required * *
* /
value : string ;
/ * *
* Optional either url or domain / path are required
* /
url? : string ;
/ * *
* Optional either url or domain / path are required
* /
domain? : string ;
/ * *
* Optional either url or domain / path are required
* /
path? : string ;
/ * *
* Optional Unix time in seconds .
* /
expires? : number ;
/ * *
* Optional httpOnly flag
* /
httpOnly? : boolean ;
/ * *
* Optional secure flag
* /
secure? : boolean ;
/ * *
* Optional sameSite flag
* /
2020-12-28 18:03:09 +03:00
sameSite ? : "Strict" | "Lax" | "None" ;
2020-12-27 00:52:05 +03:00
} > ;
/ * *
* Optional localStorage to set for context
* /
origins? : Array < {
origin : string ;
localStorage : Array < {
name : string ;
value : string ;
} > ;
} > ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* Changes the timezone of the context . See
* [ ICU ' s metaZones . txt ] ( https : //cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
* for a list of supported timezone IDs .
2020-12-27 00:52:05 +03:00
* /
timezoneId? : string ;
/ * *
* Specific user agent to use in this context .
* /
userAgent? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* * * NOTE * * Use ` recordVideo ` instead , it takes precedence over ` videoSize ` . Specifies dimensions of the automatically
* recorded video . Can only be used if ` videosPath ` is set . If not specified the size will be equal to ` viewport ` . If
* ` viewport ` is not configured explicitly the video size defaults to 1280 x720 . Actual picture of the page will be scaled
* down if necessary to fit specified size .
2020-12-27 00:52:05 +03:00
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
2020-12-29 23:12:46 +03:00
* * * NOTE * * Use ` recordVideo ` instead , it takes precedence over ` videosPath ` . Enables video recording for all pages to
* ` videosPath ` directory . If not specified , videos are not recorded . Make sure to await
2021-01-07 07:02:51 +03:00
* [ browserContext . close ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextclose) for
* videos to be saved .
2020-12-27 00:52:05 +03:00
* /
videosPath? : string ;
/ * *
* Sets a consistent viewport for each page . Defaults to an 1280 x720 viewport . ` null ` disables the default viewport .
* /
viewport? : null | ViewportSize ;
}
export interface ViewportSize {
/ * *
* page width in pixels .
* /
width : number ;
/ * *
* page height in pixels .
* /
height : number ;
}
export interface HTTPCredentials {
username : string ;
password : string ;
}
export interface Geolocation {
/ * *
* Latitude between - 90 and 90 .
* /
latitude : number ;
/ * *
* Longitude between - 180 and 180 .
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
}
export interface LaunchOptions {
/ * *
2020-12-29 23:12:46 +03:00
* Additional arguments to pass to the browser instance . The list of Chromium flags can be found
* [ here ] ( http : //peter.sh/experiments/chromium-command-line-switches/).
2020-12-27 00:52:05 +03:00
* /
args? : Array < string > ;
/ * *
* Enable Chromium sandboxing . Defaults to ` false ` .
* /
chromiumSandbox? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* * * Chromium - only * * Whether to auto - open a Developer Tools panel for each tab . If this option is ` true ` , the ` headless `
* option will be set ` false ` .
2020-12-27 00:52:05 +03:00
* /
devtools? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* If specified , accepted downloads are downloaded into this directory . Otherwise , temporary directory is created and is
* deleted when browser is closed .
2020-12-27 00:52:05 +03:00
* /
downloadsPath? : string ;
/ * *
* Specify environment variables that will be visible to the browser . Defaults to ` process.env ` .
* /
env ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
2020-12-29 23:12:46 +03:00
* Path to a browser executable to run instead of the bundled one . If ` executablePath ` is a relative path , then it is
* resolved relative to the current working directory . Note that Playwright only works with the bundled Chromium , Firefox
* or WebKit , use at your own risk .
2020-12-27 00:52:05 +03:00
* /
executablePath? : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Firefox user preferences . Learn more about the Firefox user preferences at
* [ ` about:config ` ] ( https : //support.mozilla.org/en-US/kb/about-config-editor-firefox).
2020-12-27 00:52:05 +03:00
* /
firefoxUserPrefs ? : { [ key : string ] : string | number | boolean ; } ;
/ * *
* Close the browser process on SIGHUP . Defaults to ` true ` .
* /
handleSIGHUP? : boolean ;
/ * *
* Close the browser process on Ctrl - C . Defaults to ` true ` .
* /
handleSIGINT? : boolean ;
/ * *
* Close the browser process on SIGTERM . Defaults to ` true ` .
* /
handleSIGTERM? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* Whether to run browser in headless mode . More details for
* [ Chromium ] ( https : //developers.google.com/web/updates/2017/04/headless-chrome) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode). Defaults to `true` unless the
* ` devtools ` option is ` true ` .
2020-12-27 00:52:05 +03:00
* /
headless? : boolean ;
/ * *
2020-12-29 23:12:46 +03:00
* If ` true ` , Playwright does not pass its own configurations args and only uses the ones from ` args ` . If an array is
* given , then filters out the given default arguments . Dangerous option ; use with care . Defaults to ` false ` .
2020-12-27 00:52:05 +03:00
* /
ignoreDefaultArgs? : boolean | Array < string > ;
/ * *
* Logger sink for Playwright logging .
* /
logger? : Logger ;
/ * *
* Network proxy settings .
* /
proxy ? : {
/ * *
2020-12-29 23:12:46 +03:00
* Proxy to be used for all requests . HTTP and SOCKS proxies are supported , for example ` http://myproxy.com:3128 ` or
* ` socks5://myproxy.com:3128 ` . Short form ` myproxy.com:3128 ` is considered an HTTP proxy .
2020-12-27 00:52:05 +03:00
* /
server : string ;
/ * *
* Optional coma - separated domains to bypass proxy , for example ` ".com, chromium.org, .domain.com" ` .
* /
bypass? : string ;
/ * *
* Optional username to use if HTTP proxy requires authentication .
* /
username? : string ;
/ * *
* Optional password to use if HTTP proxy requires authentication .
* /
password? : string ;
} ;
/ * *
* Slows down Playwright operations by the specified amount of milliseconds . Useful so that you can see what is going on .
* /
slowMo? : number ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds to wait for the browser instance to start . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to
* disable timeout .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
}
export interface ConnectOptions {
/ * *
* A browser websocket endpoint to connect to . * * required * *
* /
wsEndpoint : string ;
/ * *
2020-12-29 23:12:46 +03:00
* Slows down Playwright operations by the specified amount of milliseconds . Useful so that you can see what is going on .
* Defaults to 0 .
2020-12-27 00:52:05 +03:00
* /
slowMo? : number ;
/ * *
2020-12-28 18:03:09 +03:00
* Logger sink for Playwright logging . Optional .
2020-12-27 00:52:05 +03:00
* /
logger? : Logger ;
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds to wait for the connection to be established . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to
* disable timeout .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
}
interface ElementHandleWaitForSelectorOptions {
/ * *
* Defaults to ` 'visible' ` . Can be either :
2020-12-27 01:31:41 +03:00
* - ` 'attached' ` - wait for element to be present in DOM .
* - ` 'detached' ` - wait for element to not be present in DOM .
2020-12-29 23:12:46 +03:00
* - ` 'visible' ` - wait for element to have non - empty bounding box and no ` visibility:hidden ` . Note that element without
* any content or with ` display:none ` has an empty bounding box and is not considered visible .
* - ` 'hidden' ` - wait for element to be either detached from DOM , or have an empty bounding box or ` visibility:hidden ` .
* This is opposite to the ` 'visible' ` option .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
state ? : "attached" | "detached" | "visible" | "hidden" ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
}
export interface Cookie {
name : string ;
value : string ;
domain : string ;
path : string ;
/ * *
* Unix time in seconds .
* /
expires : number ;
httpOnly : boolean ;
secure : boolean ;
2020-12-28 18:03:09 +03:00
sameSite : "Strict" | "Lax" | "None" ;
2020-12-27 00:52:05 +03:00
}
interface PageWaitForSelectorOptions {
/ * *
* Defaults to ` 'visible' ` . Can be either :
2020-12-27 01:31:41 +03:00
* - ` 'attached' ` - wait for element to be present in DOM .
* - ` 'detached' ` - wait for element to not be present in DOM .
2020-12-29 23:12:46 +03:00
* - ` 'visible' ` - wait for element to have non - empty bounding box and no ` visibility:hidden ` . Note that element without
* any content or with ` display:none ` has an empty bounding box and is not considered visible .
* - ` 'hidden' ` - wait for element to be either detached from DOM , or have an empty bounding box or ` visibility:hidden ` .
* This is opposite to the ` 'visible' ` option .
2020-12-27 00:52:05 +03:00
* /
2020-12-28 18:03:09 +03:00
state ? : "attached" | "detached" | "visible" | "hidden" ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout)
* or [ page . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#pagesetdefaulttimeout)
2020-12-29 23:12:46 +03:00
* methods .
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
}
interface PageWaitForFunctionOptions {
/ * *
2020-12-29 23:12:46 +03:00
* If ` polling ` is ` 'raf' ` , then ` pageFunction ` is constantly executed in ` requestAnimationFrame ` callback . If ` polling ` is
* a number , then it is treated as an interval in milliseconds at which the function would be executed . Defaults to ` raf ` .
2020-12-27 00:52:05 +03:00
* /
polling? : number | "raf" ;
/ * *
2020-12-29 23:12:46 +03:00
* maximum time to wait for in milliseconds . Defaults to ` 30000 ` ( 30 seconds ) . Pass ` 0 ` to disable timeout . The default
* value can be changed by using the
2021-01-07 07:02:51 +03:00
* [ browserContext . setDefaultTimeout ( … ) ] ( https : //github.com/microsoft/playwright/blob/master/docs/api.md#browsercontextsetdefaulttimeout).
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
}
type Devices = {
"Blackberry PlayBook" : DeviceDescriptor ;
"Blackberry PlayBook landscape" : DeviceDescriptor ;
"BlackBerry Z30" : DeviceDescriptor ;
"BlackBerry Z30 landscape" : DeviceDescriptor ;
"Galaxy Note 3" : DeviceDescriptor ;
"Galaxy Note 3 landscape" : DeviceDescriptor ;
"Galaxy Note II" : DeviceDescriptor ;
"Galaxy Note II landscape" : DeviceDescriptor ;
"Galaxy S III" : DeviceDescriptor ;
"Galaxy S III landscape" : DeviceDescriptor ;
"Galaxy S5" : DeviceDescriptor ;
"Galaxy S5 landscape" : DeviceDescriptor ;
"iPad (gen 6)" : DeviceDescriptor ;
"iPad (gen 6) landscape" : DeviceDescriptor ;
"iPad (gen 7)" : DeviceDescriptor ;
"iPad (gen 7) landscape" : DeviceDescriptor ;
"iPad Mini" : DeviceDescriptor ;
"iPad Mini landscape" : DeviceDescriptor ;
"iPad Pro 11" : DeviceDescriptor ;
"iPad Pro 11 landscape" : DeviceDescriptor ;
"iPhone 6" : DeviceDescriptor ;
"iPhone 6 landscape" : DeviceDescriptor ;
"iPhone 6 Plus" : DeviceDescriptor ;
"iPhone 6 Plus landscape" : DeviceDescriptor ;
"iPhone 7" : DeviceDescriptor ;
"iPhone 7 landscape" : DeviceDescriptor ;
"iPhone 7 Plus" : DeviceDescriptor ;
"iPhone 7 Plus landscape" : DeviceDescriptor ;
"iPhone 8" : DeviceDescriptor ;
"iPhone 8 landscape" : DeviceDescriptor ;
"iPhone 8 Plus" : DeviceDescriptor ;
"iPhone 8 Plus landscape" : DeviceDescriptor ;
"iPhone SE" : DeviceDescriptor ;
"iPhone SE landscape" : DeviceDescriptor ;
"iPhone X" : DeviceDescriptor ;
"iPhone X landscape" : DeviceDescriptor ;
"iPhone XR" : DeviceDescriptor ;
"iPhone XR landscape" : DeviceDescriptor ;
"iPhone 11" : DeviceDescriptor ;
"iPhone 11 landscape" : DeviceDescriptor ;
"iPhone 11 Pro" : DeviceDescriptor ;
"iPhone 11 Pro landscape" : DeviceDescriptor ;
"iPhone 11 Pro Max" : DeviceDescriptor ;
"iPhone 11 Pro Max landscape" : DeviceDescriptor ;
"JioPhone 2" : DeviceDescriptor ;
"JioPhone 2 landscape" : DeviceDescriptor ;
"Kindle Fire HDX" : DeviceDescriptor ;
"Kindle Fire HDX landscape" : DeviceDescriptor ;
"LG Optimus L70" : DeviceDescriptor ;
"LG Optimus L70 landscape" : DeviceDescriptor ;
"Microsoft Lumia 550" : DeviceDescriptor ;
"Microsoft Lumia 550 landscape" : DeviceDescriptor ;
"Microsoft Lumia 950" : DeviceDescriptor ;
"Microsoft Lumia 950 landscape" : DeviceDescriptor ;
"Nexus 10" : DeviceDescriptor ;
"Nexus 10 landscape" : DeviceDescriptor ;
"Nexus 4" : DeviceDescriptor ;
"Nexus 4 landscape" : DeviceDescriptor ;
"Nexus 5" : DeviceDescriptor ;
"Nexus 5 landscape" : DeviceDescriptor ;
"Nexus 5X" : DeviceDescriptor ;
"Nexus 5X landscape" : DeviceDescriptor ;
"Nexus 6" : DeviceDescriptor ;
"Nexus 6 landscape" : DeviceDescriptor ;
"Nexus 6P" : DeviceDescriptor ;
"Nexus 6P landscape" : DeviceDescriptor ;
"Nexus 7" : DeviceDescriptor ;
"Nexus 7 landscape" : DeviceDescriptor ;
"Nokia Lumia 520" : DeviceDescriptor ;
"Nokia Lumia 520 landscape" : DeviceDescriptor ;
"Nokia N9" : DeviceDescriptor ;
"Nokia N9 landscape" : DeviceDescriptor ;
"Pixel 2" : DeviceDescriptor ;
"Pixel 2 landscape" : DeviceDescriptor ;
"Pixel 2 XL" : DeviceDescriptor ;
"Pixel 2 XL landscape" : DeviceDescriptor ;
[ key : string ] : DeviceDescriptor ;
}