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' ;
} ;
/ * *
2021-01-15 02:01:39 +03:00
* - extends : [ EventEmitter ]
2020-12-28 18:03:09 +03:00
*
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
*
2021-01-14 18:48:56 +03:00
* If the function passed to the
2021-01-22 01:35:20 +03:00
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatepagefunction-arg) returns a
* [ Promise ] , then
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatepagefunction-arg) would wait
* for the promise to resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2021-01-14 18:48:56 +03:00
* If the function passed to the
2021-01-22 01:35:20 +03:00
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatepagefunction-arg) returns a
* non - [ Serializable ] value , then
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatepagefunction-arg) resolves
2021-02-01 22:43:26 +03:00
* to ` undefined ` . Playwright also supports transferring some additional values that are not serializable by ` JSON ` : ` -0 ` ,
* ` NaN ` , ` Infinity ` , ` -Infinity ` .
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
*
2021-01-14 18:48:56 +03:00
* [ ElementHandle ] instances can be passed as an argument to the
2021-01-22 01:35:20 +03:00
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatepagefunction-arg):
2020-12-28 18:03:09 +03:00
*
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-22 01:35:20 +03:00
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatepagefunction-arg).
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @ param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
evaluate < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < R > ;
evaluate < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < R > ;
/ * *
2021-02-01 22:43:26 +03:00
* Returns the value of the ` pageFunction ` invocation as a [ JSHandle ] .
2020-12-28 18:03:09 +03:00
*
2021-01-14 18:48:56 +03:00
* The only difference between
2021-01-22 01:35:20 +03:00
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatepagefunction-arg) and
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatehandlepagefunction-arg)
* is that
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatehandlepagefunction-arg)
2021-02-01 22:43:26 +03:00
* returns [ JSHandle ] .
2020-12-28 18:03:09 +03:00
*
2021-01-14 18:48:56 +03:00
* If the function passed to the
2021-01-22 01:35:20 +03:00
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatehandlepagefunction-arg)
* returns a [ Promise ] , then
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatehandlepagefunction-arg)
* would wait for the promise to resolve and return its value .
2021-01-14 18:48:56 +03:00
*
* ` ` ` js
* const aWindowHandle = await page . 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 page . evaluateHandle ( 'document' ) ; // Handle for the 'document'
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-14 18:48:56 +03:00
* [ JSHandle ] instances can be passed as an argument to the
2021-01-22 01:35:20 +03:00
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatehandlepagefunction-arg):
2020-12-28 18:03:09 +03:00
*
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
*
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
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-22 01:35:20 +03:00
* Shortcut for main frame ' s [ frame . $ ( selector ) ] ( https : //playwright.dev/docs/api/class-frame#frameselector).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/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-22 01:35:20 +03:00
* Shortcut for main frame ' s [ frame . $ $ ( selector ) ] ( https : //playwright.dev/docs/api/class-frame#frameselector).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ page . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevalselector-pagefunction-arg)
* 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-22 01:35:20 +03:00
* Shortcut for main frame ' s
* [ frame . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevalselector-pagefunction-arg).
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
$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-22 01:35:20 +03:00
* [ page . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevalselector-pagefunction-arg)
* 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
2021-01-14 08:03:35 +03:00
* const divCounts = await page . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
2020-12-27 00:52:05 +03:00
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-22 01:35:20 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
$ $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
*
2021-01-22 01:35:20 +03:00
* The
* [ page . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforfunctionpagefunction-arg-options)
* 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 ( ) ;
2021-01-14 08:03:35 +03:00
* const watchDog = page . waitForFunction ( ( ) = > window . innerWidth < 100 ) ;
2020-12-27 00:52:05 +03:00
* await page . setViewportSize ( { width : 50 , height : 50 } ) ;
* await watchDog ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-14 08:03:35 +03:00
* To pass an argument to the predicate of
2021-01-22 01:35:20 +03:00
* [ page . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforfunctionpagefunction-arg-options)
* 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-22 01:35:20 +03:00
* [ frame . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framewaitforfunctionpagefunction-arg-options).
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* @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 ( ) ;
2021-01-14 08:03:35 +03:00
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
2020-12-27 00:52:05 +03:00
* await page . goto ( currentURL ) ;
2021-01-14 08:03:35 +03:00
* const element = await page . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
2020-12-27 00:52:05 +03:00
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-22 01:35:20 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . exposeBinding ( name , callback [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextexposebindingname-callback-options)
2020-12-29 23:12:46 +03:00
* for the context - wide version .
2020-12-27 00:52:05 +03:00
*
2021-01-12 23:14:27 +03:00
* > NOTE : Functions installed via
2021-01-22 01:35:20 +03:00
* [ page . exposeBinding ( name , callback [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pageexposebindingname-callback-options)
* 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 .
* /
2021-01-22 20:58:31 +03:00
on ( event : 'close' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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 )
2021-01-14 08:03:35 +03:00
* console . log ( ` ${ i } : ${ await msg . args ( ) [ i ] . jsonValue ( ) } ` ) ;
2020-12-27 00:52:05 +03:00
* } ) ;
* 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-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
on ( event : 'crash' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-02-03 21:34:45 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Listener * * must * *
* either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogacceptprompttext) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogdismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
*
* > NOTE : When no [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#pageondialog) listeners are present, all
* dialogs are automatically dismissed .
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
* /
2021-01-22 20:58:31 +03:00
on ( event : 'domcontentloaded' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
*
2021-01-12 23:14:27 +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 , 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-22 01:35:20 +03:00
* [ fileChooser . setFiles ( files [ , options ] ) ] ( https : //playwright.dev/docs/api/class-filechooser#filechoosersetfilesfiles-options)
* 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
* /
2021-01-22 20:58:31 +03:00
on ( event : 'load' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
* 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
2021-01-22 01:35:20 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextonpage), but 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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* [ page . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-page#pagerouteurl-handler) or
* [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler).
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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
2021-01-22 01:35:20 +03:00
* complete with [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#pageonrequestfinished) event and
* not with [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#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 .
* /
2021-01-22 20:58:31 +03:00
once ( event : 'close' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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 )
2021-01-14 08:03:35 +03:00
* console . log ( ` ${ i } : ${ await msg . args ( ) [ i ] . jsonValue ( ) } ` ) ;
2020-12-27 00:52:05 +03:00
* } ) ;
* 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-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
once ( event : 'crash' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-02-03 21:34:45 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Listener * * must * *
* either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogacceptprompttext) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogdismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
*
* > NOTE : When no [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#pageondialog) listeners are present, all
* dialogs are automatically dismissed .
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
* /
2021-01-22 20:58:31 +03:00
once ( event : 'domcontentloaded' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
*
2021-01-12 23:14:27 +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 , 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-22 01:35:20 +03:00
* [ fileChooser . setFiles ( files [ , options ] ) ] ( https : //playwright.dev/docs/api/class-filechooser#filechoosersetfilesfiles-options)
* 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
* /
2021-01-22 20:58:31 +03:00
once ( event : 'load' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
* 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
2021-01-22 01:35:20 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextonpage), but 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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* [ page . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-page#pagerouteurl-handler) or
* [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler).
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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
2021-01-22 01:35:20 +03:00
* complete with [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#pageonrequestfinished) event and
* not with [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#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 .
* /
2021-01-22 20:58:31 +03:00
addListener ( event : 'close' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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 )
2021-01-14 08:03:35 +03:00
* console . log ( ` ${ i } : ${ await msg . args ( ) [ i ] . jsonValue ( ) } ` ) ;
2020-12-27 00:52:05 +03:00
* } ) ;
* 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-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
addListener ( event : 'crash' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-02-03 21:34:45 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Listener * * must * *
* either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogacceptprompttext) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogdismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
*
* > NOTE : When no [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#pageondialog) listeners are present, all
* dialogs are automatically dismissed .
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
* /
2021-01-22 20:58:31 +03:00
addListener ( event : 'domcontentloaded' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
*
2021-01-12 23:14:27 +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 , 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-22 01:35:20 +03:00
* [ fileChooser . setFiles ( files [ , options ] ) ] ( https : //playwright.dev/docs/api/class-filechooser#filechoosersetfilesfiles-options)
* 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
* /
2021-01-22 20:58:31 +03:00
addListener ( event : 'load' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
* 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
2021-01-22 01:35:20 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextonpage), but 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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* [ page . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-page#pagerouteurl-handler) or
* [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler).
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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
2021-01-22 01:35:20 +03:00
* complete with [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#pageonrequestfinished) event and
* not with [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#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 .
* /
2021-01-22 20:58:31 +03:00
removeListener ( event : 'close' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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 )
2021-01-14 08:03:35 +03:00
* console . log ( ` ${ i } : ${ await msg . args ( ) [ i ] . jsonValue ( ) } ` ) ;
2020-12-27 00:52:05 +03:00
* } ) ;
* 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-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
removeListener ( event : 'crash' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-02-03 21:34:45 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Listener * * must * *
* either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogacceptprompttext) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogdismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
*
* > NOTE : When no [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#pageondialog) listeners are present, all
* dialogs are automatically dismissed .
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
* /
2021-01-22 20:58:31 +03:00
removeListener ( event : 'domcontentloaded' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
*
2021-01-12 23:14:27 +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 , 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-22 01:35:20 +03:00
* [ fileChooser . setFiles ( files [ , options ] ) ] ( https : //playwright.dev/docs/api/class-filechooser#filechoosersetfilesfiles-options)
* 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
* /
2021-01-22 20:58:31 +03:00
removeListener ( event : 'load' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
* 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
2021-01-22 01:35:20 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextonpage), but 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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* [ page . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-page#pagerouteurl-handler) or
* [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler).
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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
2021-01-22 01:35:20 +03:00
* complete with [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#pageonrequestfinished) event and
* not with [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#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 .
* /
2021-01-22 20:58:31 +03:00
off ( event : 'close' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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 )
2021-01-14 08:03:35 +03:00
* console . log ( ` ${ i } : ${ await msg . args ( ) [ i ] . jsonValue ( ) } ` ) ;
2020-12-27 00:52:05 +03:00
* } ) ;
* 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-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
off ( event : 'crash' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-02-03 21:34:45 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Listener * * must * *
* either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogacceptprompttext) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogdismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
*
* > NOTE : When no [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#pageondialog) listeners are present, all
* dialogs are automatically dismissed .
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
* /
2021-01-22 20:58:31 +03:00
off ( event : 'domcontentloaded' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
*
2021-01-12 23:14:27 +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 , 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-22 01:35:20 +03:00
* [ fileChooser . setFiles ( files [ , options ] ) ] ( https : //playwright.dev/docs/api/class-filechooser#filechoosersetfilesfiles-options)
* 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
* /
2021-01-22 20:58:31 +03:00
off ( event : 'load' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
* 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
2021-01-22 01:35:20 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextonpage), but 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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* [ page . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-page#pagerouteurl-handler) or
* [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler).
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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
2021-01-22 01:35:20 +03:00
* complete with [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#pageonrequestfinished) event and
* not with [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#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
*
2021-01-15 05:19:02 +03:00
* ` ` ` js browser
2020-12-27 00:52:05 +03:00
* // preload.js
* Math . random = ( ) = > 42 ;
2021-01-14 08:03:35 +03:00
* ` ` `
2020-12-27 00:52:05 +03:00
*
2021-01-14 08:03:35 +03:00
* ` ` ` js
2020-12-27 00:52:05 +03:00
* // In your playwright script, assuming the preload.js file is in same directory
2021-01-14 08:03:35 +03:00
* await page . addInitScript ( { path : './preload.js' } ) ;
2020-12-27 00:52:05 +03:00
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : The order of evaluation of multiple scripts installed via
2021-01-22 01:35:20 +03:00
* [ browserContext . addInitScript ( script [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextaddinitscriptscript-arg)
* and [ page . addInitScript ( script [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageaddinitscriptscript-arg) is not
2021-01-07 07:02:51 +03:00
* 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-22 01:35:20 +03:00
* [ frame . addScriptTag ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameaddscripttagoptions).
2021-01-09 03:17:54 +03:00
* @param options
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
addScriptTag ( options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* Raw JavaScript content to be injected into frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
content? : string ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-09 03:17:54 +03:00
* current working directory .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2021-01-09 03:17:54 +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.
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
type ? : string ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* URL of a script to be added .
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
url? : string ;
2020-12-27 00:52:05 +03:00
} ) : 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-22 01:35:20 +03:00
* [ frame . addStyleTag ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameaddstyletagoptions).
2021-01-09 03:17:54 +03:00
* @param options
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
addStyleTag ( options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* Raw CSS content to be injected into frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
content? : string ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-09 03:17:54 +03:00
* current working directory .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2021-01-09 03:17:54 +03:00
* URL of the ` <link> ` tag .
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
url? : string ;
2020-12-27 00:52:05 +03:00
} ) : 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to click in the center 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-22 01:35:20 +03:00
* Shortcut for main frame ' s
* [ frame . check ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framecheckselector-options).
* @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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
check ( selector : string , options ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to click in the 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-22 01:35:20 +03:00
* Shortcut for main frame ' s
* [ frame . click ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameclickselector-options).
* @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 : //playwright.dev/docs/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 ;
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE : if ` runBeforeUnload ` is passed as true , a ` beforeunload ` dialog might be summoned and should be handled manually
2021-01-22 01:35:20 +03:00
* via [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#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
2021-01-22 01:35:20 +03:00
* [ ChromiumCoverage ] ( # 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to double click in the 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
*
2021-01-12 23:14:27 +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-22 01:35:20 +03:00
* [ frame . dblclick ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framedblclickselector-options).
* @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 : //playwright.dev/docs/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 ;
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* ` ` ` 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
*
2021-01-28 01:19:37 +03:00
* @param options
2020-12-27 00:52:05 +03:00
* /
2021-01-28 01:19:37 +03:00
emulateMedia ( options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-28 01:19:37 +03:00
* Emulates ` 'prefers-colors-scheme' ` media feature , supported values are ` 'light' ` , ` 'dark' ` , ` 'no-preference' ` . Passing
* ` null ` disables color scheme emulation .
2020-12-27 00:52:05 +03:00
* /
2021-01-28 01:19:37 +03:00
colorScheme? : null | "light" | "dark" | "no-preference" ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-28 01:19:37 +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 .
2020-12-27 00:52:05 +03:00
* /
2021-01-28 01:19:37 +03:00
media? : null | "screen" | "print" ;
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-22 01:35:20 +03:00
* [ browserContext . exposeFunction ( name , callback ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextexposefunctionname-callback)
2020-12-29 23:12:46 +03:00
* for context - wide exposed function .
2020-12-27 00:52:05 +03:00
*
2021-01-12 23:14:27 +03:00
* > NOTE : Functions installed via
2021-01-22 01:35:20 +03:00
* [ page . exposeFunction ( name , callback ) ] ( https : //playwright.dev/docs/api/class-page#pageexposefunctionname-callback)
* survive navigations .
2020-12-28 18:03:09 +03:00
*
2021-01-14 08:03:35 +03:00
* An example of adding an ` sha1 ` 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 ( ) ;
2021-01-14 08:03:35 +03:00
* await page . exposeFunction ( 'sha1' , text = > crypto . createHash ( 'sha1' ) . update ( text ) . digest ( 'hex' ) ) ;
2020-12-27 00:52:05 +03:00
* await page . setContent ( `
* < script >
* async function onClick() {
2021-01-14 08:03:35 +03:00
* document . querySelector ( 'div' ) . textContent = await window . sha1 ( 'PLAYWRIGHT' ) ;
2020-12-27 00:52:05 +03:00
* }
* < / 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 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
/ * *
2021-01-22 01:35:20 +03:00
* This method waits for an element matching ` selector ` , waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, focuses the
2021-01-26 00:40:19 +03:00
* element , fills it and triggers an ` input ` event after filling . If the element is inside the ` <label> ` element that has
* associated [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), that control will be
* filled instead . If the element to be filled 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-22 01:35:20 +03:00
* [ page . type ( selector , text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagetypeselector-text-options).
2020-12-28 18:03:09 +03:00
*
2021-01-22 01:35:20 +03:00
* Shortcut for main frame ' s
* [ frame . fill ( selector , value [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framefillselector-value-options)
* @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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* Shortcut for main frame ' s
* [ frame . focus ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framefocusselector-options).
* @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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ response . status ( ) ] ( https : //playwright.dev/docs/api/class-response#responsestatus).
2020-12-27 00:52:05 +03:00
*
2021-01-12 23:14:27 +03:00
* > NOTE : ` page.goto ` either throws an error or returns a main resource response . The only exceptions are navigation to
2020-12-29 23:12:46 +03:00
* ` about:blank ` or navigation to the same URL with a different hash , which would succeed and return ` null ` .
2021-01-12 23:14:27 +03:00
* > NOTE : Headless mode doesn ' t support navigation to a PDF document . See the
2020-12-29 23:12:46 +03:00
* [ upstream issue ] ( https : //bugs.chromium.org/p/chromium/issues/detail?id=761295).
2020-12-27 00:52:05 +03:00
*
2021-01-22 01:35:20 +03:00
* Shortcut for main frame ' s [ frame . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framegotourl-options)
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-22 01:35:20 +03:00
* [ page . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-page#pagesetextrahttpheadersheaders).
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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to hover over the 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-22 01:35:20 +03:00
* Shortcut for main frame ' s
* [ frame . hover ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framehoverselector-options).
* @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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
hover ( selector : string , options ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns ` element.innerHTML ` .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns ` element.innerText ` .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < string > ;
2021-01-09 04:36:17 +03:00
/ * *
* Returns whether the element is checked . Throws if the element is not a checkbox or radio input .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/selectors) for more details.
2021-01-09 04:36:17 +03:00
* @param options
* /
isChecked ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-09 04:36:17 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
2020-12-27 00:52:05 +03:00
/ * *
* Indicates that the page has been closed .
* /
isClosed ( ) : boolean ;
2021-01-08 23:27:54 +03:00
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is disabled , the opposite of [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isDisabled ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is [ editable ] ( https : //playwright.dev/docs/actionability#editable).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isEditable ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isEnabled ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is hidden , the opposite of [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isHidden ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isVisible ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
2020-12-27 00:52:05 +03:00
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 > ;
2021-02-04 03:01:51 +03:00
/ * *
* Pauses script execution . Playwright will stop executing the script and wait for the user to either press 'Resume' button
* in the page overlay or to call ` playwright.resume() ` in the DevTools console .
*
* User can inspect selectors or perform manual steps while paused . Resume will continue running the original script from
* the place it was paused .
*
* > NOTE : This method requires Playwright to be started in a headed mode , with a falsy [ ` options: headless ` ] value in the
* [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browsertypelaunchoptions).
* /
pause ( ) : Promise < void > ;
2020-12-27 00:52:05 +03:00
/ * *
* Returns the PDF buffer .
*
2021-01-12 23:14:27 +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-28 01:19:37 +03:00
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pageemulatemediaoptions) before calling
2021-01-07 07:02:51 +03:00
* ` page.pdf() ` :
2020-12-28 18:03:09 +03:00
*
2021-01-12 23:14:27 +03:00
* > NOTE : By default , ` page.pdf() ` generates a pdf with modified colors for printing . Use the
2020-12-29 23:12:46 +03:00
* [ ` -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
*
2021-01-12 23:14:27 +03:00
* > 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 > ;
/ * *
2021-01-22 01:35:20 +03:00
* Focuses the element , and then uses [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboarddownkey)
* and [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardupkey).
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-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
*
2021-01-12 23:14:27 +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-22 01:35:20 +03:00
* [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler))
* when request matches both handlers .
2020-12-27 00:52:05 +03:00
*
2021-01-12 23:14:27 +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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE : Screenshots take at least 1 / 6 second on Chromium OS X and Chromium Windows . See https : //crbug.com/741689 for
2020-12-29 23:12:46 +03:00
* 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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
*
2021-01-19 22:27:05 +03:00
* Will wait until all specified options are present in the ` <select> ` element .
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // single selection matching the value
* page . selectOption ( 'select#colors' , 'blue' ) ;
*
2021-01-14 08:03:35 +03:00
* // single selection matching the label
2020-12-27 00:52:05 +03:00
* 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-22 01:35:20 +03:00
* [ frame . selectOption ( selector , values [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameselectoptionselector-values-options)
* @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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* - [ page . goBack ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagegobackoptions)
* - [ page . goForward ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagegoforwardoptions)
* - [ page . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagegotourl-options)
* - [ page . reload ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagereloadoptions)
* - [ page . setContent ( html [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagesetcontenthtml-options)
* - [ page . waitForNavigation ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitfornavigationoptions)
2020-12-28 18:03:09 +03:00
*
2021-01-12 23:14:27 +03:00
* > NOTE :
2021-01-22 01:35:20 +03:00
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
2020-12-29 23:12:46 +03:00
* takes priority over
2021-01-22 01:35:20 +03:00
* [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
2020-12-29 23:12:46 +03:00
* and
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout).
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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE :
2021-01-22 01:35:20 +03:00
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
2020-12-29 23:12:46 +03:00
* takes priority over
2021-01-22 01:35:20 +03:00
* [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout).
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 .
*
2021-01-22 01:35:20 +03:00
* > NOTE : [ page . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-page#pagesetextrahttpheadersheaders)
2021-01-12 23:14:27 +03:00
* 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-22 01:35:20 +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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param files
* @param options
* /
setInputFiles ( selector : string , files : string | Array < string > | {
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] name
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] type
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
2021-01-11 05:18:35 +03:00
* File content
2020-12-27 00:52:05 +03:00
* /
buffer : Buffer ;
} | Array < {
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] name
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] type
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
2021-01-11 05:18:35 +03:00
* File content
2020-12-27 00:52:05 +03:00
* /
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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ browser . newContext ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browser#browsernewcontextoptions) allows to set
2021-01-07 07:02:51 +03:00
* 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 : {
/ * *
2021-01-11 05:18:35 +03:00
* page width in pixels .
2020-12-27 00:52:05 +03:00
* /
width : number ;
/ * *
2021-01-11 05:18:35 +03:00
* page height in pixels .
2020-12-27 00:52:05 +03:00
* /
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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . touchscreen ] ( https : //playwright.dev/docs/api/class-page#pagetouchscreen) to tap the 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
*
2021-01-22 01:35:20 +03:00
* > NOTE : [ page . tap ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagetapselector-options) requires
* that the ` hasTouch ` option of the browser context be set to true .
2020-12-28 18:03:09 +03:00
*
2021-01-22 01:35:20 +03:00
* Shortcut for main frame ' s
* [ frame . tap ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frametapselector-options).
* @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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
tap ( selector : string , options ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns ` element.textContent ` .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ frame . title ( ) ] ( https : //playwright.dev/docs/api/class-frame#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-22 01:35:20 +03:00
* [ page . fill ( selector , value [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagefillselector-value-options).
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-22 01:35:20 +03:00
* [ keyboard . press ( key [ , options ] ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardpresskey-options).
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-22 01:35:20 +03:00
* Shortcut for main frame ' s
* [ frame . type ( selector , text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frametypeselector-text-options).
* @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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to click in the center 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-22 01:35:20 +03:00
* [ frame . uncheck ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameuncheckselector-options).
* @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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
uncheck ( selector : string , options ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2021-01-22 01:35:20 +03:00
* Removes a route created with
* [ page . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-page#pagerouteurl-handler). 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-22 01:35:20 +03:00
* Shortcut for main frame ' s [ frame . url ( ) ] ( https : //playwright.dev/docs/api/class-frame#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 .
* /
2021-01-22 20:58:31 +03:00
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean , timeout? : number } | ( ( page : Page ) = > boolean ) ) : Promise < Page > ;
2020-12-27 00:52:05 +03:00
/ * *
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 )
2021-01-14 08:03:35 +03:00
* console . log ( ` ${ i } : ${ await msg . args ( ) [ i ] . jsonValue ( ) } ` ) ;
2020-12-27 00:52:05 +03:00
* } ) ;
* 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-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
waitForEvent ( event : 'crash' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean , timeout? : number } | ( ( page : Page ) = > boolean ) ) : Promise < Page > ;
2020-12-27 00:52:05 +03:00
/ * *
2021-02-03 21:34:45 +03:00
* Emitted when a JavaScript dialog appears , such as ` alert ` , ` prompt ` , ` confirm ` or ` beforeunload ` . Listener * * must * *
* either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogacceptprompttext) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogdismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
*
* > NOTE : When no [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#pageondialog) listeners are present, all
* dialogs are automatically dismissed .
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
* /
2021-01-22 20:58:31 +03:00
waitForEvent ( event : 'domcontentloaded' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean , timeout? : number } | ( ( page : Page ) = > boolean ) ) : Promise < Page > ;
2020-12-27 00:52:05 +03:00
/ * *
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
*
2021-01-12 23:14:27 +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 , 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-22 01:35:20 +03:00
* [ fileChooser . setFiles ( files [ , options ] ) ] ( https : //playwright.dev/docs/api/class-filechooser#filechoosersetfilesfiles-options)
* 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
* /
2021-01-22 20:58:31 +03:00
waitForEvent ( event : 'load' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean , timeout? : number } | ( ( page : Page ) = > boolean ) ) : Promise < Page > ;
2020-12-27 00:52:05 +03:00
/ * *
* 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
2021-01-22 01:35:20 +03:00
* [ browserContext . on ( 'page' ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextonpage), but 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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* [ page . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-page#pagerouteurl-handler) or
* [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler).
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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE : HTTP Error responses , such as 404 or 503 , are still successful responses from HTTP standpoint , so request will
2021-01-22 01:35:20 +03:00
* complete with [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#pageonrequestfinished) event and
* not with [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#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-22 01:35:20 +03:00
* [ frame . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framewaitforloadstatestate-options).
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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2021-01-16 03:01:41 +03:00
* Waits for the main frame navigation and 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
*
2021-01-12 23:14:27 +03:00
* > NOTE : Usage of the [ History API ] ( https : //developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL is
2020-12-29 23:12:46 +03:00
* 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-22 01:35:20 +03:00
* [ frame . waitForNavigation ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framewaitfornavigationoptions).
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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ frame . waitForTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-frame#framewaitfortimeouttimeout).
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
*
2021-01-12 23:14:27 +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-22 01:35:20 +03:00
* [ page . mainFrame ( ) ] ( https : //playwright.dev/docs/api/class-page#pagemainframe) and
* [ frame . childFrames ( ) ] ( https : //playwright.dev/docs/api/class-frame#framechildframes) methods.
2020-12-28 18:03:09 +03:00
*
* [ Frame ] object ' s lifecycle is controlled by three events , dispatched on the page object :
2021-01-22 01:35:20 +03:00
* - [ page . on ( 'frameattached' ) ] ( https : //playwright.dev/docs/api/class-page#pageonframeattached) - fired when the frame
* gets attached to the page . A Frame can be attached to the page only once .
* - [ page . on ( 'framenavigated' ) ] ( https : //playwright.dev/docs/api/class-page#pageonframenavigated) - fired when the frame
* commits navigation to a different URL .
* - [ page . on ( 'framedetached' ) ] ( https : //playwright.dev/docs/api/class-page#pageonframedetached) - 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
* /
export interface Frame {
/ * *
2021-02-01 22:43:26 +03:00
* Returns the return value of ` pageFunction ` .
2020-12-28 18:03:09 +03:00
*
2021-01-14 18:48:56 +03:00
* If the function passed to the
2021-01-22 01:35:20 +03:00
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatepagefunction-arg) returns
* a [ Promise ] , then
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatepagefunction-arg) would
* wait for the promise to resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2021-01-14 18:48:56 +03:00
* If the function passed to the
2021-01-22 01:35:20 +03:00
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatepagefunction-arg) returns
* a non - [ Serializable ] value , then
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatepagefunction-arg) returns
2021-02-01 22:43:26 +03:00
* ` undefined ` . Playwright also supports transferring some additional values that are not serializable by ` JSON ` : ` -0 ` ,
* ` NaN ` , ` Infinity ` , ` -Infinity ` .
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
*
2021-01-14 18:48:56 +03:00
* [ ElementHandle ] instances can be passed as an argument to the
2021-01-22 01:35:20 +03:00
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatepagefunction-arg):
2020-12-28 18:03:09 +03:00
*
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
*
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
evaluate < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < R > ;
evaluate < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < R > ;
/ * *
2021-02-01 22:43:26 +03:00
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
2020-12-28 18:03:09 +03:00
*
2021-01-14 18:48:56 +03:00
* The only difference between
2021-01-22 01:35:20 +03:00
* [ frame . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatepagefunction-arg) and
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatehandlepagefunction-arg)
2021-02-01 22:43:26 +03:00
* is that [ method : Frame.evaluateHandle ` ] returns [JSHandle].
2020-12-28 18:03:09 +03:00
*
2021-01-14 18:48:56 +03:00
* If the function , passed to the
2021-01-22 01:35:20 +03:00
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatehandlepagefunction-arg),
* returns a [ Promise ] , then
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatehandlepagefunction-arg)
* 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
*
2021-01-14 18:48:56 +03:00
* [ JSHandle ] instances can be passed as an argument to the
2021-01-22 01:35:20 +03:00
* [ frame . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevaluatehandlepagefunction-arg):
2020-12-28 18:03:09 +03:00
*
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
*
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
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-22 01:35:20 +03:00
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns `null`.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ Working with selectors ] ( https : //playwright.dev/docs/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 : //playwright.dev/docs/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 > [ ] > ;
/ * *
2021-02-01 22:43:26 +03:00
* 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-22 01:35:20 +03:00
* ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, the
* method throws an error .
2020-12-28 18:03:09 +03:00
*
2021-01-29 22:08:22 +03:00
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevalselector-pagefunction-arg)
* 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 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-22 01:35:20 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
$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-02-01 22:43:26 +03:00
* 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-22 01:35:20 +03:00
* as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
2020-12-28 18:03:09 +03:00
*
2021-01-29 22:08:22 +03:00
* If ` pageFunction ` returns a [ Promise ] , then
* [ frame . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-frame#frameevalselector-pagefunction-arg)
* 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 frame . $ $eval ( 'div' , ( divs , min ) = > divs . length >= min , 10 ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-22 01:35:20 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
$ $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
*
2021-01-22 01:35:20 +03:00
* The
* [ frame . waitForFunction ( pageFunction [ , arg , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framewaitforfunctionpagefunction-arg-options)
* 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
*
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* @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
2021-01-14 18:48:56 +03:00
* const { chromium } = require ( 'playwright' ) ; // Or 'firefox' or 'webkit'.
2020-12-27 00:52:05 +03:00
*
* ( async ( ) = > {
2021-01-14 18:48:56 +03:00
* const browser = await chromium . launch ( ) ;
2020-12-27 00:52:05 +03:00
* const page = await browser . newPage ( ) ;
2021-01-14 18:48:56 +03:00
* for ( let currentURL of [ 'https://google.com' , 'https://bbc.com' ] ) {
2020-12-27 00:52:05 +03:00
* await page . goto ( currentURL ) ;
2021-01-14 18:48:56 +03:00
* const element = await page . mainFrame ( ) . waitForSelector ( 'img' ) ;
* console . log ( 'Loaded image: ' + await element . getAttribute ( 'src' ) ) ;
2020-12-27 00:52:05 +03:00
* }
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-22 01:35:20 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/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 .
2021-01-09 03:17:54 +03:00
* @param options
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
addScriptTag ( options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* Raw JavaScript content to be injected into frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
content? : string ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-09 03:17:54 +03:00
* current working directory .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2021-01-09 03:17:54 +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.
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
type ? : string ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* URL of a script to be added .
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
url? : string ;
2020-12-27 00:52:05 +03:00
} ) : 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 .
2021-01-09 03:17:54 +03:00
* @param options
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
addStyleTag ( options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* Raw CSS content to be injected into frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
content? : string ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-09 03:17:54 +03:00
* current working directory .
2020-12-27 00:52:05 +03:00
* /
path? : string ;
/ * *
2021-01-09 03:17:54 +03:00
* URL of the ` <link> ` tag .
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
url? : string ;
2020-12-27 00:52:05 +03:00
} ) : 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to click in the center 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-22 01:35:20 +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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
check ( selector : string , options ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to click in the 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-22 01:35:20 +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 : //playwright.dev/docs/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 ;
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to double click in the 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
*
2021-01-12 23:14:27 +03:00
* > NOTE : ` frame.dblclick() ` dispatches two ` click ` events and a single ` dblclick ` event .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/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 ;
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2021-01-22 01:35:20 +03:00
* This method waits for an element matching ` selector ` , waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, focuses the
2021-01-26 00:40:19 +03:00
* element , fills it and triggers an ` input ` event after filling . If the element is inside the ` <label> ` element that has
* associated [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), that control will be
* filled instead . If the element to be filled 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-22 01:35:20 +03:00
* [ frame . type ( selector , text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#frametypeselector-text-options).
* @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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ elementHandle . contentFrame ( ) ] ( https : //playwright.dev/docs/api/class-elementhandle#elementhandlecontentframe). 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-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ response . status ( ) ] ( https : //playwright.dev/docs/api/class-response#responsestatus).
2020-12-27 01:31:41 +03:00
*
2021-01-12 23:14:27 +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
2020-12-29 23:12:46 +03:00
* [ 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-22 01:35:20 +03:00
* [ page . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-page#pagesetextrahttpheadersheaders).
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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to hover over the 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-22 01:35:20 +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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
hover ( selector : string , options ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns ` element.innerHTML ` .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < string > ;
/ * *
* Returns ` element.innerText ` .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < string > ;
2021-01-09 04:36:17 +03:00
/ * *
* Returns whether the element is checked . Throws if the element is not a checkbox or radio input .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/selectors) for more details.
2021-01-09 04:36:17 +03:00
* @param options
* /
isChecked ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-09 04:36:17 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
2020-12-27 00:52:05 +03:00
/ * *
* Returns ` true ` if the frame has been detached , or ` false ` otherwise .
* /
isDetached ( ) : boolean ;
2021-01-08 23:27:54 +03:00
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is disabled , the opposite of [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isDisabled ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is [ editable ] ( https : //playwright.dev/docs/actionability#editable).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isEditable ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isEnabled ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is hidden , the opposite of [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isHidden ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* @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 : //playwright.dev/docs/selectors) for more details.
2021-01-08 23:27:54 +03:00
* @param options
* /
isVisible ( selector : string , options ? : {
/ * *
* Maximum time in milliseconds , defaults to 30 seconds , pass ` 0 ` to disable timeout . The default value can be changed by
* using the
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2021-01-08 23:27:54 +03:00
* /
timeout? : number ;
} ) : Promise < boolean > ;
2020-12-27 00:52:05 +03:00
/ * *
* 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 .
*
2021-01-12 23:14:27 +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-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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
*
2021-01-19 22:27:05 +03:00
* Will wait until all specified options are present in the ` <select> ` element .
*
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-22 01:35:20 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param files
* @param options
* /
setInputFiles ( selector : string , files : string | Array < string > | {
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] name
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] type
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
2021-01-11 05:18:35 +03:00
* File content
2020-12-27 00:52:05 +03:00
* /
buffer : Buffer ;
} | Array < {
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] name
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] type
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
2021-01-11 05:18:35 +03:00
* File content
2020-12-27 00:52:05 +03:00
* /
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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . touchscreen ] ( https : //playwright.dev/docs/api/class-page#pagetouchscreen) to tap the 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
*
2021-01-12 23:14:27 +03:00
* > NOTE : ` frame.tap() ` requires that the ` hasTouch ` option of the browser context be set to true .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
tap ( selector : string , options ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* Returns ` element.textContent ` .
2021-01-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ frame . fill ( selector , value [ , options ] ) ] ( https : //playwright.dev/docs/api/class-frame#framefillselector-value-options).
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-22 01:35:20 +03:00
* [ keyboard . press ( key [ , options ] ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardpresskey-options).
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-22 01:35:20 +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 : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the matched element, unless `force` option is set. If the
2020-12-29 23:12:46 +03:00
* 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 .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to click in the center 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-22 01:35:20 +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 : //playwright.dev/docs/selectors) for more details.
2020-12-27 00:52:05 +03:00
* @param options
* /
uncheck ( selector : string , options ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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
*
2021-01-11 08:00:52 +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 :
2020-12-29 23:12:46 +03:00
* - ` '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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
2021-01-16 03:01:41 +03:00
* Waits for the frame navigation and 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 ( [
2021-01-14 18:48:56 +03:00
* frame . waitForNavigation ( ) , // The promise resolves after navigation has finished
* frame . click ( 'a.delayed-navigation' ) , // Clicking the link will indirectly cause a navigation
2020-12-27 00:52:05 +03:00
* ] ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-01-12 23:14:27 +03:00
* > NOTE : Usage of the [ History API ] ( https : //developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL is
2020-12-29 23:12:46 +03:00
* 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-22 01:35:20 +03:00
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout),
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout),
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 > ; }
/ * *
2021-01-15 02:01:39 +03:00
* - extends : [ EventEmitter ]
2020-12-28 18:03:09 +03:00
*
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-22 01:35:20 +03:00
* See
* [ page . exposeBinding ( name , callback [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pageexposebindingname-callback-options)
* 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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
on ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
once ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
addListener ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
removeListener ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
off ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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-22 01:35:20 +03:00
* [ browserContext . cookies ( [ urls ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextcookiesurls).
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 < {
name : string ;
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
*
2021-01-15 05:19:02 +03:00
* ` ` ` js browser
2020-12-27 00:52:05 +03:00
* // 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'
* } ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : The order of evaluation of multiple scripts installed via
2021-01-22 01:35:20 +03:00
* [ browserContext . addInitScript ( script [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextaddinitscriptscript-arg)
* and [ page . addInitScript ( script [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageaddinitscriptscript-arg) is not
2021-01-07 07:02:51 +03:00
* 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 .
*
2021-01-12 23:14:27 +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-22 01:35:20 +03:00
* See [ page . exposeFunction ( name , callback ) ] ( https : //playwright.dev/docs/api/class-page#pageexposefunctionname-callback)
* 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-22 01:35:20 +03:00
* [ chromiumBrowserContext . backgroundPages ( ) ] ( https : //playwright.dev/docs/api/class-chromiumbrowsercontext#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-22 01:35:20 +03:00
* Page routes ( set up with [ page . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-page#pagerouteurl-handler))
2021-01-07 07:02:51 +03:00
* take precedence over browser context routes when request matches both handlers .
2020-12-27 00:52:05 +03:00
*
2021-01-12 23:14:27 +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-22 01:35:20 +03:00
* - [ page . goBack ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagegobackoptions)
* - [ page . goForward ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagegoforwardoptions)
* - [ page . goto ( url [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagegotourl-options)
* - [ page . reload ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagereloadoptions)
* - [ page . setContent ( html [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagesetcontenthtml-options)
* - [ page . waitForNavigation ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitfornavigationoptions)
2020-12-28 18:03:09 +03:00
*
2021-01-12 23:14:27 +03:00
* > NOTE :
2021-01-22 01:35:20 +03:00
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout)
* and [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) take
* priority over
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout).
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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE :
2021-01-22 01:35:20 +03:00
* [ page . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaultnavigationtimeouttimeout),
* [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) and
* [ browserContext . setDefaultNavigationTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaultnavigationtimeouttimeout)
2020-12-29 23:12:46 +03:00
* take priority over
2021-01-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout).
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-22 01:35:20 +03:00
* [ page . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-page#pagesetextrahttpheadersheaders). 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
*
2021-01-12 23:14:27 +03:00
* > NOTE :
2021-01-22 01:35:20 +03:00
* [ browserContext . setExtraHTTPHeaders ( headers ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetextrahttpheadersheaders)
2021-01-12 23:14:27 +03:00
* 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 } ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Consider using
2021-01-22 01:35:20 +03:00
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextgrantpermissionspermissions-options)
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 | {
/ * *
2021-01-11 05:18:35 +03:00
* Latitude between - 90 and 90 .
2020-12-27 00:52:05 +03:00
* /
latitude : number ;
/ * *
2021-01-11 05:18:35 +03:00
* Longitude between - 180 and 180 .
2020-12-27 00:52:05 +03:00
* /
longitude : number ;
/ * *
* Non - negative accuracy value . Defaults to ` 0 ` .
* /
accuracy? : number ;
} ) : Promise < void > ;
/ * *
2021-01-07 22:11:40 +03:00
* * * DEPRECATED * * Browsers may cache credentials after successful authentication . Create a new browser context instead .
* @deprecated
2020-12-27 00:52:05 +03:00
* @param httpCredentials
* /
setHTTPCredentials ( httpCredentials : null | {
username : string ;
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 ? : {
/ * *
2021-01-20 19:12:39 +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 . 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-22 01:35:20 +03:00
* [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler).
* 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 ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler).
* @param handler Optional handler function used to register a routing with [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler).
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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( browserContext : BrowserContext ) = > boolean , timeout? : number } | ( ( browserContext : BrowserContext ) = > boolean ) ) : Promise < BrowserContext > ;
2020-12-27 00:52:05 +03:00
/ * *
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
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#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' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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 {
/ * *
2021-02-01 22:43:26 +03:00
* Returns the return value of ` pageFunction ` .
2020-12-28 18:03:09 +03:00
*
2021-02-01 22:43:26 +03:00
* If the function passed to the
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#workerevaluatepagefunction-arg)
* returns a [ Promise ] , then
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#workerevaluatepagefunction-arg)
* would wait for the promise to resolve and return its value .
2020-12-28 18:03:09 +03:00
*
2021-02-01 22:43:26 +03:00
* If the function passed to the
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#workerevaluatepagefunction-arg)
* returns a non - [ Serializable ] value , then
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#workerevaluatepagefunction-arg)
* returns ` undefined ` . Playwright also supports transferring some additional values that are not serializable by ` JSON ` :
* ` -0 ` , ` NaN ` , ` Infinity ` , ` -Infinity ` .
* @param pageFunction Function to be evaluated in the worker context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
evaluate < R , Arg > ( pageFunction : PageFunction < Arg , R > , arg : Arg ) : Promise < R > ;
evaluate < R > ( pageFunction : PageFunction < void , R > , arg? : any ) : Promise < R > ;
/ * *
2021-02-01 22:43:26 +03:00
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
2020-12-28 18:03:09 +03:00
*
2021-02-01 22:43:26 +03:00
* The only difference between
* [ worker . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#workerevaluatepagefunction-arg) and
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#workerevaluatehandlepagefunction-arg)
* is that
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#workerevaluatehandlepagefunction-arg)
* returns [ JSHandle ] .
2020-12-28 18:03:09 +03:00
*
2021-02-01 22:43:26 +03:00
* If the function passed to the
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#workerevaluatehandlepagefunction-arg)
* returns a [ Promise ] , then
* [ worker . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-worker#workerevaluatehandlepagefunction-arg)
* would wait for the promise to resolve and return its value .
* @param pageFunction Function to be evaluated in the worker context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
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-22 01:35:20 +03:00
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatehandlepagefunction-arg)
* 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-22 01:35:20 +03:00
* [ jsHandle . dispose ( ) ] ( https : //playwright.dev/docs/api/class-jshandle#jshandledispose). JSHandles are 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-22 01:35:20 +03:00
* [ page . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevalselector-pagefunction-arg),
* [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatepagefunction-arg) and
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatehandlepagefunction-arg)
* methods .
2020-12-27 00:52:05 +03:00
* /
export interface JSHandle < T = any > {
/ * *
2021-02-01 22:43:26 +03:00
* 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' ) ;
2021-01-14 18:48:56 +03:00
* expect ( await tweetHandle . evaluate ( node = > node . innerText ) ) . toBe ( '10 retweets' ) ;
2020-12-27 00:52:05 +03:00
* ` ` `
2020-12-28 18:03:09 +03:00
*
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
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 > ;
/ * *
2021-02-01 22:43:26 +03:00
* Returns the return value of ` pageFunction ` as a [ 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
2021-02-01 22:43:26 +03:00
* [ 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-22 01:35:20 +03:00
* See
* [ page . evaluateHandle ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatehandlepagefunction-arg)
* for more details .
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
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 * * .
*
2021-01-12 23:14:27 +03:00
* > NOTE : The method will return an empty JSON object if the referenced object is not stringifiable . It will throw an
2020-12-29 23:12:46 +03:00
* 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-22 01:35:20 +03:00
* [ page . $ ( selector ) ] ( https : //playwright.dev/docs/api/class-page#pageselector) 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-22 01:35:20 +03:00
* [ jsHandle . dispose ( ) ] ( https : //playwright.dev/docs/api/class-jshandle#jshandledispose). ElementHandles 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-22 01:35:20 +03:00
* [ page . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevalselector-pagefunction-arg)
* and [ page . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-page#pageevaluatepagefunction-arg)
* 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-22 01:35:20 +03:00
* [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the selector, returns `null`.
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/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-22 01:35:20 +03:00
* [ Working with selectors ] ( https : //playwright.dev/docs/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 : //playwright.dev/docs/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 > [ ] > ;
/ * *
2021-02-01 22:43:26 +03:00
* 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-22 01:35:20 +03:00
* argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details. If no elements match the
* selector , the method throws an error .
2020-12-28 18:03:09 +03:00
*
2021-01-29 22:08:22 +03:00
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#elementhandleevalselector-pagefunction-arg)
* 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' ) ;
* 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-22 01:35:20 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
$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-02-01 22:43:26 +03:00
* 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-22 01:35:20 +03:00
* matched elements as a first argument to ` pageFunction ` . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
2020-12-28 18:03:09 +03:00
*
2021-01-29 22:08:22 +03:00
* If ` pageFunction ` returns a [ Promise ] , then
* [ elementHandle . $ $eval ( selector , pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#elementhandleevalselector-pagefunction-arg)
* 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
* ` ` ` 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-22 01:35:20 +03:00
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/selectors) for more details.
2021-02-01 22:43:26 +03:00
* @param pageFunction Function to be evaluated in the page context .
2021-02-04 05:25:06 +03:00
* @param arg Optional argument to pass to ` pageFunction ` .
2020-12-27 00:52:05 +03:00
* /
$ $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' } ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : This method does not work across navigations , use
2021-01-22 01:35:20 +03:00
* [ page . waitForSelector ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforselectorselector-options)
* instead .
* @param selector A selector to query for . See [ working with selectors ] ( https : //playwright.dev/docs/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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to click in the center 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 ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method clicks the element by performing the following steps :
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to click in the 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
* /
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 ;
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 :
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to double click in the 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
*
2021-01-12 23:14:27 +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 ;
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 > ;
/ * *
2021-01-22 01:35:20 +03:00
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, focuses the element, fills it and triggers an `input`
2021-01-26 00:40:19 +03:00
* event after filling . If the element is inside the ` <label> ` element that has associated
* [ control ] ( https : //developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), that control will be filled
* instead . If the element to be filled 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 :
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to hover over the 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 ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 > ;
2021-01-09 04:36:17 +03:00
/ * *
* Returns whether the element is checked . Throws if the element is not a checkbox or radio input .
* /
isChecked ( ) : Promise < boolean > ;
2021-01-08 23:27:54 +03:00
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is disabled , the opposite of [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
2021-01-08 23:27:54 +03:00
* /
isDisabled ( ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is [ editable ] ( https : //playwright.dev/docs/actionability#editable).
2021-01-08 23:27:54 +03:00
* /
isEditable ( ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
2021-01-08 23:27:54 +03:00
* /
isEnabled ( ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is hidden , the opposite of [ visible ] ( https : //playwright.dev/docs/actionability#visible).
2021-01-08 23:27:54 +03:00
* /
isHidden ( ) : Promise < boolean > ;
/ * *
2021-01-22 01:35:20 +03:00
* Returns whether the element is [ visible ] ( https : //playwright.dev/docs/actionability#visible).
2021-01-08 23:27:54 +03:00
* /
isVisible ( ) : Promise < boolean > ;
2020-12-27 00:52:05 +03:00
/ * *
* Returns the frame containing the given element .
* /
ownerFrame ( ) : Promise < null | Frame > ;
/ * *
2021-01-22 01:35:20 +03:00
* Focuses the element , and then uses [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboarddownkey)
* and [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardupkey).
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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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
*
2021-01-22 01:35:20 +03:00
* This method waits for the [ actionability ] ( https : //playwright.dev/docs/actionability) checks, then scrolls element into view before taking a
2020-12-29 23:12:46 +03:00
* 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 > ;
/ * *
2021-01-22 01:35:20 +03:00
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, then tries to scroll element into view, unless it is
2020-12-29 23:12:46 +03:00
* completely visible as defined by
2021-01-13 19:56:57 +03:00
* [ 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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
*
2021-01-19 22:27:05 +03:00
* Will wait until all specified options are present in the ` <select> ` element .
*
2020-12-27 00:52:05 +03:00
* ` ` ` js
* // single selection matching the value
2021-01-14 22:09:44 +03:00
* handle . selectOption ( 'blue' ) ;
2020-12-27 00:52:05 +03:00
*
2021-01-14 18:48:56 +03:00
* // single selection matching the label
2021-01-14 22:09:44 +03:00
* handle . selectOption ( { label : 'Blue' } ) ;
2020-12-27 00:52:05 +03:00
*
* // multiple selection
2021-01-14 22:09:44 +03:00
* handle . selectOption ( [ 'red' , 'green' , 'blue' ] ) ;
2020-12-27 00:52:05 +03:00
* ` ` `
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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < Array < string > > ;
/ * *
2021-01-22 01:35:20 +03:00
* This method waits for [ actionability ] ( https : //playwright.dev/docs/actionability) checks, then focuses the element and selects all its text
2020-12-29 23:12:46 +03:00
* 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 > | {
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] name
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] type
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
2021-01-11 05:18:35 +03:00
* File content
2020-12-27 00:52:05 +03:00
* /
buffer : Buffer ;
} | Array < {
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] name
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] type
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
2021-01-11 05:18:35 +03:00
* File content
2020-12-27 00:52:05 +03:00
* /
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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
/ * *
* This method taps the element by performing the following steps :
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . touchscreen ] ( https : //playwright.dev/docs/api/class-page#pagetouchscreen) to tap the 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
*
2021-01-12 23:14:27 +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 ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ elementHandle . press ( key [ , options ] ) ] ( https : //playwright.dev/docs/api/class-elementhandle#elementhandlepresskey-options).
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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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 .
2021-01-22 01:35:20 +03:00
* 1 . Wait for [ actionability ] ( https : //playwright.dev/docs/actionability) checks on the element, unless `force` option is set.
2020-12-28 18:03:09 +03:00
* 1 . Scroll the element into view if needed .
2021-01-22 01:35:20 +03:00
* 1 . Use [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#pagemouse) to click in the center 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 ? : {
/ * *
2021-01-22 01:35:20 +03:00
* Whether to bypass the [ actionability ] ( https : //playwright.dev/docs/actionability) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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
*
2021-01-22 01:35:20 +03:00
* Depending on the ` state ` parameter , this method waits for one of the [ actionability ] ( https : //playwright.dev/docs/actionability) checks to pass.
2020-12-29 23:12:46 +03:00
* This method throws when the element is detached while waiting , unless waiting for the ` "hidden" ` state .
2021-01-22 01:35:20 +03:00
* - ` "visible" ` Wait until the element is [ visible ] ( https : //playwright.dev/docs/actionability#visible).
* - ` "hidden" ` Wait until the element is [ not visible ] ( https : //playwright.dev/docs/actionability#visible) or
* [ not attached ] ( https : //playwright.dev/docs/actionability#attached). Note that waiting for hidden does not throw when the element detaches.
* - ` "stable" ` Wait until the element is both [ visible ] ( https : //playwright.dev/docs/actionability#visible) and
* [ stable ] ( https : //playwright.dev/docs/actionability#stable).
* - ` "enabled" ` Wait until the element is [ enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* - ` "disabled" ` Wait until the element is [ not enabled ] ( https : //playwright.dev/docs/actionability#enabled).
* - ` "editable" ` Wait until the element is [ editable ] ( https : //playwright.dev/docs/actionability#editable).
2020-12-28 18:03:09 +03:00
*
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
* /
2021-01-08 23:27:54 +03:00
waitForElementState ( state : "visible" | "hidden" | "stable" | "enabled" | "disabled" | "editable" , 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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' ]
* } ) ;
* ` ` `
*
2021-02-08 19:22:54 +03:00
* > * * Chromium - only * * Playwright can also be used to control the Google Chrome or Microsoft Edge browsers , 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-02-08 19:22:54 +03:00
* > Stock browsers like Google Chrome and Microsoft Edge are suitable for tests that require proprietary media codecs for
* video playback . See
* [ this article ] ( https : //www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) for other
* differences between Chromium and Chrome .
* [ This article ] ( https : //chromium.googlesource.com/chromium/src/+/lkgr/docs/chromium_browser_vs_google_chrome.md)
2020-12-29 23:12:46 +03:00
* 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 .
2021-02-03 00:28:41 +03:00
* @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#introduction) and
* [ Firefox ] ( https : //developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options#User_Profile). Note that Chromium's user
* data directory is the * * parent * * directory of the "Profile Path" seen at ` chrome://version ` .
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-28 01:19:37 +03:00
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pageemulatemediaoptions) for more details.
2021-01-22 01:35:20 +03:00
* 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 ;
} ;
/ * *
2021-02-02 21:46:36 +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 > ;
/ * *
* 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-22 01:35:20 +03:00
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextgrantpermissionspermissions-options)
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-22 01:35:20 +03:00
* [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextclose) for the 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
2021-01-22 01:35:20 +03:00
* sure to await [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextclose) for
2021-01-07 07:02:51 +03:00
* videos to be saved .
2020-12-27 00:52:05 +03:00
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
2021-02-10 03:44:50 +03:00
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` scaled down to fit
* into 800 x800 . If ` viewport ` is not configured explicitly the video size defaults to 800 x450 . 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 ;
/ * *
2021-01-07 22:11:40 +03:00
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
2020-12-27 00:52:05 +03:00
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
2021-01-07 22:11:40 +03:00
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
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 ;
/ * *
2021-02-02 21:46:36 +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 ;
/ * *
* 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-22 01:35:20 +03:00
* [ chromiumBrowser . startTracing ( [ page , options ] ) ] ( https : //playwright.dev/docs/api/class-chromiumbrowser#chromiumbrowserstarttracingpage-options)
* and [ chromiumBrowser . stopTracing ( ) ] ( https : //playwright.dev/docs/api/class-chromiumbrowser#chromiumbrowserstoptracing) to
* create a trace file which can be opened in Chrome DevTools or
2020-12-29 23:12:46 +03:00
* [ 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
*
2021-01-08 21:59:24 +03:00
* [ ChromiumBrowser ] can also be used for testing Chrome Extensions .
*
2021-01-12 23:14:27 +03:00
* > NOTE : Extensions in Chrome / Chromium currently only work in non - headless mode .
2021-01-08 21:59:24 +03:00
*
* The following is code for getting a handle to the
* [ background page ] ( https : //developer.chrome.com/extensions/background_pages) of an extension whose source is located in
* ` ./my-extension ` :
*
* ` ` ` js
* const { chromium } = require ( 'playwright' ) ;
*
* ( async ( ) = > {
* const pathToExtension = require ( 'path' ) . join ( __dirname , 'my-extension' ) ;
* const userDataDir = '/tmp/test-user-data-dir' ;
* const browserContext = await chromium . launchPersistentContext ( userDataDir , {
* headless : false ,
* args : [
* ` --disable-extensions-except= ${ pathToExtension } ` ,
* ` --load-extension= ${ pathToExtension } `
* ]
* } ) ;
* const backgroundPage = browserContext . backgroundPages ( ) [ 0 ] ;
* // Test the background page as you would any other page.
* await browserContext . close ( ) ;
* } ) ( ) ;
* ` ` `
*
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 > ; }
/ * *
2021-01-15 02:01:39 +03:00
* - extends : [ EventEmitter ]
2020-12-28 18:03:09 +03:00
*
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-22 01:35:20 +03:00
* [ page . waitForSelector ( selector [ , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforselectorselector-options)
* or [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browsertypelaunchoptions).
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
*
2021-01-15 02:01:39 +03:00
* Rendering engines of Chromium , Firefox and Webkit have a concept of "accessibility tree" , which is then translated into
* different platform - specific APIs . Accessibility namespace gives access to this Accessibility Tree .
2020-12-28 18:03:09 +03:00
*
2021-01-15 02:01:39 +03:00
* Most of the accessibility tree gets filtered out when converting from internal browser 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
*
2021-01-12 23:14:27 +03:00
* > NOTE : The Chromium accessibility tree contains nodes that go unused on most platforms and by most screen readers .
2020-12-29 23:12:46 +03:00
* 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 [ ] ;
2021-02-01 22:43:26 +03:00
/ * *
* Electron application representation . You can use
* [ electron . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-electron#electronlaunchoptions) to obtain the
* application instance . This instance you can control main electron process as well as work with Electron windows :
*
* ` ` ` js
* const { _electron : electron } = require ( 'playwright' ) ;
*
* ( async ( ) = > {
* // Launch Electron app.
* const electronApp = await electron . launch ( { args : [ 'main.js' ] } ) ;
*
* // Evaluation expression in the Electron context.
* const appPath = await electronApp . evaluate ( async ( electron ) = > {
* // This runs in the main Electron process, |electron| parameter
* // here is always the result of the require('electron') in the main
* // app script.
* return electron . getAppPath ( ) ;
* } ) ;
*
* // Get the first window that the app opens, wait if necessary.
* const window = await electronApp . firstWindow ( ) ;
* // Print the title.
* console . log ( await window . title ( ) ) ;
* // Capture a screenshot.
* await window . screenshot ( { path : 'intro.png' } ) ;
* // Direct Electron console to Node terminal.
* window . on ( 'console' , console . log ) ;
* // Click button.
* await window . click ( 'text=Click me' ) ;
* } ) ( ) ;
* ` ` `
*
* /
export interface ElectronApplication {
/ * *
* Returns the return value of ` pageFunction ` .
*
* If the function passed to the
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electronapplicationevaluatepagefunction-arg)
* returns a [ Promise ] , then
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electronapplicationevaluatepagefunction-arg)
* would wait for the promise to resolve and return its value .
*
* If the function passed to the
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electronapplicationevaluatepagefunction-arg)
* returns a non - [ Serializable ] value , then
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electronapplicationevaluatepagefunction-arg)
* returns ` undefined ` . Playwright also supports transferring some additional values that are not serializable by ` JSON ` :
* ` -0 ` , ` NaN ` , ` Infinity ` , ` -Infinity ` .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg Optional argument to pass to ` pageFunction ` .
* /
evaluate < R , Arg > ( pageFunction : PageFunctionOn < typeof import ( ' electron ' ) , Arg , R > , arg : Arg ) : Promise < R > ;
evaluate < R > ( pageFunction : PageFunctionOn < typeof import ( ' electron ' ) , void , R > , arg? : any ) : Promise < R > ;
/ * *
* Returns the return value of ` pageFunction ` as a [ JSHandle ] .
*
* The only difference between
* [ electronApplication . evaluate ( pageFunction [ , arg ] ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electronapplicationevaluatepagefunction-arg)
* and
* [ electronApplication . evaluateHandle ( pageFunction , arg ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electronapplicationevaluatehandlepagefunction-arg)
* is that
* [ electronApplication . evaluateHandle ( pageFunction , arg ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electronapplicationevaluatehandlepagefunction-arg)
* returns [ JSHandle ] .
*
* If the function passed to the
* [ electronApplication . evaluateHandle ( pageFunction , arg ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electronapplicationevaluatehandlepagefunction-arg)
* returns a [ Promise ] , then
* [ electronApplication . evaluateHandle ( pageFunction , arg ) ] ( https : //playwright.dev/docs/api/class-electronapplication#electronapplicationevaluatehandlepagefunction-arg)
* would wait for the promise to resolve and return its value .
* @param pageFunction Function to be evaluated in the worker context .
* @param arg
* /
evaluateHandle < R , Arg > ( pageFunction : PageFunctionOn < typeof import ( ' electron ' ) , Arg , R > , arg : Arg ) : Promise < SmartHandle < R > > ;
evaluateHandle < R > ( pageFunction : PageFunctionOn < typeof import ( ' electron ' ) , void , R > , arg? : any ) : Promise < SmartHandle < R > > ;
/ * *
* This event is issued when the application closes .
* /
on ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* This event is issued for every window that is created * * and loaded * * in Electron . It contains a [ Page ] that can be used
* for Playwright automation .
* /
on ( event : 'window' , listener : ( page : Page ) = > void ) : this ;
/ * *
* This event is issued when the application closes .
* /
once ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* This event is issued for every window that is created * * and loaded * * in Electron . It contains a [ Page ] that can be used
* for Playwright automation .
* /
once ( event : 'window' , listener : ( page : Page ) = > void ) : this ;
/ * *
* This event is issued when the application closes .
* /
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* This event is issued for every window that is created * * and loaded * * in Electron . It contains a [ Page ] that can be used
* for Playwright automation .
* /
addListener ( event : 'window' , listener : ( page : Page ) = > void ) : this ;
/ * *
* This event is issued when the application closes .
* /
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* This event is issued for every window that is created * * and loaded * * in Electron . It contains a [ Page ] that can be used
* for Playwright automation .
* /
removeListener ( event : 'window' , listener : ( page : Page ) = > void ) : this ;
/ * *
* This event is issued when the application closes .
* /
off ( event : 'close' , listener : ( ) = > void ) : this ;
/ * *
* This event is issued for every window that is created * * and loaded * * in Electron . It contains a [ Page ] that can be used
* for Playwright automation .
* /
off ( event : 'window' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Closes Electron application .
* /
close ( ) : Promise < void > ;
/ * *
* This method returns browser context that can be used for setting up context - wide routing , etc .
* /
context ( ) : BrowserContext ;
/ * *
* Convenience method that waits for the first application window to be opened . Typically your script will start with :
*
* ` ` ` js
* const electronApp = await electron . launch ( {
* args : [ 'main.js' ]
* } ) ;
* const window = await electronApp . firstWindow ( ) ;
* // ...
* ` ` `
*
* /
firstWindow ( ) : Promise < Page > ;
/ * *
* This event is issued when the application closes .
* /
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( ) = > boolean , timeout? : number } | ( ( ) = > boolean ) ) : Promise < void > ;
/ * *
* This event is issued for every window that is created * * and loaded * * in Electron . It contains a [ Page ] that can be used
* for Playwright automation .
* /
waitForEvent ( event : 'window' , optionsOrPredicate ? : { predicate ? : ( page : Page ) = > boolean , timeout? : number } | ( ( page : Page ) = > boolean ) ) : Promise < Page > ;
/ * *
* Convenience method that returns all the opened windows .
* /
windows ( ) : Array < Page > ; }
2020-12-27 00:52:05 +03:00
// This is required to not export everything by default. See https://github.com/Microsoft/TypeScript/issues/19545#issuecomment-340490459
export { } ;
/ * *
2021-01-15 02:01:39 +03:00
* - extends : [ EventEmitter ]
2020-12-28 18:03:09 +03:00
*
2021-01-08 03:12:25 +03:00
* A Browser is created via
2021-01-22 01:35:20 +03:00
* [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browsertypelaunchoptions). An example
2021-01-08 03:12:25 +03:00
* of using a [ Browser ] to create a [ Page ] :
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://example.com' ) ;
* await browser . close ( ) ;
* } ) ( ) ;
* ` ` `
2020-12-28 18:03:09 +03:00
*
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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
on ( event : 'disconnected' , listener : ( browser : Browser ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
once ( event : 'disconnected' , listener : ( browser : Browser ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
addListener ( event : 'disconnected' , listener : ( browser : Browser ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
removeListener ( event : 'disconnected' , listener : ( browser : Browser ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
off ( event : 'disconnected' , listener : ( browser : Browser ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* In case this browser is obtained using
2021-01-22 01:35:20 +03:00
* [ browserType . launch ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsertype#browsertypelaunchoptions), closes the
2021-01-07 07:02:51 +03:00
* browser and all of its pages ( if any were opened ) .
2020-12-28 18:03:09 +03:00
*
2021-01-08 03:12:25 +03:00
* In case this browser is connected to , 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-22 01:35:20 +03:00
* [ browser . newContext ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browser#browsernewcontextoptions) followed by the
* [ browserContext . newPage ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#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-28 01:19:37 +03:00
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pageemulatemediaoptions) for more details.
2021-01-22 01:35:20 +03:00
* 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-22 01:35:20 +03:00
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextgrantpermissionspermissions-options)
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-22 01:35:20 +03:00
* [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextclose) for the 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
2021-01-22 01:35:20 +03:00
* sure to await [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextclose) for
2021-01-07 07:02:51 +03:00
* videos to be saved .
2020-12-27 00:52:05 +03:00
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
2021-02-10 03:44:50 +03:00
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` scaled down to fit
* into 800 x800 . If ` viewport ` is not configured explicitly the video size defaults to 800 x450 . 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 ;
} ;
} ;
/ * *
2021-02-03 04:48:32 +03:00
* Populates context with given storage state . This option can be used to initialize context with logged - in information
2020-12-29 23:12:46 +03:00
* obtained via
2021-01-22 01:35:20 +03:00
* [ browserContext . storageState ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextstoragestateoptions).
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 < {
name : string ;
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 ;
/ * *
2021-01-07 22:11:40 +03:00
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
2020-12-27 00:52:05 +03:00
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
2021-01-07 22:11:40 +03:00
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
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 ;
}
2021-01-07 22:46:05 +03:00
export interface BrowserServer {
/ * *
* Emitted when the browser server closes .
* /
on ( event : 'close' , listener : ( ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
* Emitted when the browser server closes .
* /
once ( event : 'close' , listener : ( ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
* Emitted when the browser server closes .
* /
addListener ( event : 'close' , listener : ( ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Emitted when the browser server closes .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
removeListener ( event : 'close' , listener : ( ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Emitted when the browser server closes .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
off ( event : 'close' , listener : ( ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Closes the browser gracefully and makes sure the process is terminated .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
close ( ) : Promise < void > ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Kills the browser process and waits for the process to exit .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
kill ( ) : Promise < void > ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Spawned browser application process .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
process ( ) : ChildProcess ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Browser websocket url .
*
* Browser websocket endpoint which can be used as an argument to
2021-01-22 01:35:20 +03:00
* [ browserType . connect ( params ) ] ( https : //playwright.dev/docs/api/class-browsertype#browsertypeconnectparams) to establish
* connection to the browser .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
wsEndpoint ( ) : string ;
2020-12-27 00:52:05 +03:00
}
/ * *
2021-01-07 22:46:05 +03:00
* - extends : [ BrowserContext ]
2020-12-28 18:03:09 +03:00
*
2021-01-07 22:46: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
2021-01-07 22:46:05 +03:00
* const backgroundPage = await context . waitForEvent ( 'backgroundpage' ) ;
2020-12-27 00:52:05 +03:00
* ` ` `
*
* /
2021-01-07 22:46:05 +03:00
export interface ChromiumBrowserContext extends BrowserContext {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Emitted when new background page is created in the context .
*
2021-01-12 23:14:27 +03:00
* > NOTE : Only works with persistent context .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
on ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Emitted when new service worker is created in the context .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
on ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
on ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#pageonpopup) to
* receive events about popups relevant to a specific page .
2021-01-07 22:46:05 +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 .
*
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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
* /
2021-01-07 22:46:05 +03:00
on ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Emitted when new background page is created in the context .
*
2021-01-12 23:14:27 +03:00
* > NOTE : Only works with persistent context .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
once ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Emitted when new service worker is created in the context .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
once ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
once ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#pageonpopup) to
* receive events about popups relevant to a specific page .
2021-01-07 22:46:05 +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 .
*
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* 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
* /
2021-01-07 22:46:05 +03:00
once ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Emitted when new background page is created in the context .
*
2021-01-12 23:14:27 +03:00
* > NOTE : Only works with persistent context .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
addListener ( event : 'backgroundpage' , listener : ( page : Page ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Emitted when new service worker is created in the context .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
addListener ( event : 'serviceworker' , listener : ( worker : Worker ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2020-12-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
addListener ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#pageonpopup) to
* receive events about popups relevant to a specific page .
2021-01-07 22:46:05 +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 .
*
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* to wait until the page gets to a particular state ( you should not need it in most cases ) .
2021-01-07 22:46:05 +03:00
* /
addListener ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new background page is created in the context .
*
2021-01-12 23:14:27 +03:00
* > NOTE : Only works with persistent context .
2021-01-07 22:46: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 ;
/ * *
* 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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2021-01-07 22:46:05 +03:00
* /
2021-01-22 20:58:31 +03:00
removeListener ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2021-01-07 22:46:05 +03:00
/ * *
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#pageonpopup) to
* receive events about popups relevant to a specific page .
2021-01-07 22:46:05 +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 .
*
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* to wait until the page gets to a particular state ( you should not need it in most cases ) .
2021-01-07 22:46:05 +03:00
* /
removeListener ( event : 'page' , listener : ( page : Page ) = > void ) : this ;
/ * *
* Emitted when new background page is created in the context .
*
2021-01-12 23:14:27 +03:00
* > NOTE : Only works with persistent context .
2021-01-07 22:46: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 ;
/ * *
* 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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2021-01-07 22:46:05 +03:00
* /
2021-01-22 20:58:31 +03:00
off ( event : 'close' , listener : ( browserContext : BrowserContext ) = > void ) : this ;
2021-01-07 22:46:05 +03:00
/ * *
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#pageonpopup) to
* receive events about popups relevant to a specific page .
2021-01-07 22:46:05 +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 .
*
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* to wait until the page gets to a particular state ( you should not need it in most cases ) .
2021-01-07 22:46: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 .
*
2021-01-12 23:14:27 +03:00
* > NOTE : Only works with persistent context .
2021-01-07 22:46: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 > ;
/ * *
* 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-22 01:35:20 +03:00
* - The [ browser . close ( ) ] ( https : //playwright.dev/docs/api/class-browser#browserclose) method was called.
2021-01-07 22:46:05 +03:00
* /
2021-01-22 20:58:31 +03:00
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( browserContext : BrowserContext ) = > boolean , timeout? : number } | ( ( browserContext : BrowserContext ) = > boolean ) ) : Promise < BrowserContext > ;
2021-01-07 22:46:05 +03:00
/ * *
* The event is emitted when a new Page is created in the BrowserContext . The page may still be loading . The event will
2021-01-22 01:35:20 +03:00
* also fire for popup pages . See also [ page . on ( 'popup' ) ] ( https : //playwright.dev/docs/api/class-page#pageonpopup) to
* receive events about popups relevant to a specific page .
2021-01-07 22:46:05 +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 .
*
* ` ` ` js
* const [ page ] = await Promise . all ( [
* context . waitForEvent ( 'page' ) ,
* page . click ( 'a[target=_blank]' ) ,
* ] ) ;
* console . log ( await page . evaluate ( 'location.href' ) ) ;
* ` ` `
*
2021-01-12 23:14:27 +03:00
* > NOTE : Use
2021-01-22 01:35:20 +03:00
* [ page . waitForLoadState ( [ state , options ] ) ] ( https : //playwright.dev/docs/api/class-page#pagewaitforloadstatestate-options)
* to wait until the page gets to a particular state ( you should not need it in most cases ) .
2021-01-07 22:46: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 .
*
* An example of using JavaScript coverage to produce Istambul report for page load :
*
* ` ` ` 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 ( ) ;
* } ) ( ) ;
* ` ` `
*
* /
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
*
2021-01-12 23:14:27 +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
2021-01-07 22:46:05 +03:00
* ` __playwright_evaluation_script__ ` as their URL .
* @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
*
2021-01-12 23:14:27 +03:00
* > NOTE : CSS Coverage doesn ' t include dynamically injected style tags without sourceURLs .
2021-01-07 22:46: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
*
2021-01-12 23:14:27 +03:00
* > NOTE : JavaScript Coverage doesn ' t include anonymous scripts by default . However , scripts with sourceURLs are reported .
2021-01-07 22:46: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 ;
} > ;
} > ;
} >> ;
}
/ * *
* [ ConsoleMessage ] objects are dispatched by page via the
2021-01-22 01:35:20 +03:00
* [ page . on ( 'console' ) ] ( https : //playwright.dev/docs/api/class-page#pageonconsole) event.
2021-01-07 22:46:05 +03:00
* /
export interface ConsoleMessage {
args ( ) : Array < JSHandle > ;
location ( ) : {
/ * *
* URL of the resource .
* /
url : string ;
/ * *
* 0 - based line number in the resource .
* /
lineNumber : number ;
/ * *
* 0 - based column number in the resource .
* /
columnNumber : number ;
} ;
text ( ) : string ;
/ * *
* One of the following values : ` 'log' ` , ` 'debug' ` , ` 'info' ` , ` 'error' ` , ` 'warning' ` , ` 'dir' ` , ` 'dirxml' ` , ` 'table' ` ,
* ` 'trace' ` , ` 'clear' ` , ` 'startGroup' ` , ` 'startGroupCollapsed' ` , ` 'endGroup' ` , ` 'assert' ` , ` 'profile' ` , ` 'profileEnd' ` ,
* ` 'count' ` , ` 'timeEnd' ` .
* /
type ( ) : string ;
}
/ * *
* [ Dialog ] objects are dispatched by page via the
2021-01-22 01:35:20 +03:00
* [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#pageondialog) event.
2021-01-07 22:46:05 +03:00
*
* An example of using ` Dialog ` class :
*
* ` ` ` 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' ) ) ;
* } ) ( ) ;
* ` ` `
*
2021-02-03 21:34:45 +03:00
* > NOTE : Dialogs are dismissed automatically , unless there is a
* [ page . on ( 'dialog' ) ] ( https : //playwright.dev/docs/api/class-page#pageondialog) listener. When listener is present, it
* * * must * * either [ dialog . accept ( [ promptText ] ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogacceptprompttext) or
* [ dialog . dismiss ( ) ] ( https : //playwright.dev/docs/api/class-dialog#dialogdismiss) the dialog - otherwise the page will
* [ freeze ] ( https : //developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the dialog, and
* actions like click will never finish .
2021-01-07 22:46: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 ;
}
/ * *
* [ Download ] objects are dispatched by page via the
2021-01-22 01:35:20 +03:00
* [ page . on ( 'download' ) ] ( https : //playwright.dev/docs/api/class-page#pageondownload) event.
2021-01-07 22:46:05 +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 .
*
* Download event is emitted once the download starts . Download path becomes available once download completes :
*
* ` ` ` 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 ( ) ;
* ` ` `
*
2021-01-12 23:14:27 +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 , download events are emitted , but the actual download is not
* performed and user has no access to the downloaded files .
2021-01-07 22:46: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 > ;
/ * *
* 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 .
* /
suggestedFilename ( ) : string ;
/ * *
* Returns downloaded url .
* /
url ( ) : string ;
}
2021-02-01 22:43:26 +03:00
/ * *
* Playwright has * * experimental * * support for Electron automation . You can access electron namespace via :
*
* ` ` ` js
* const { _electron } = require ( 'playwright' ) ;
* ` ` `
*
* An example of the Electron automation script would be :
*
* ` ` ` js
* const { _electron : electron } = require ( 'playwright' ) ;
*
* ( async ( ) = > {
* // Launch Electron app.
* const electronApp = await electron . launch ( { args : [ 'main.js' ] } ) ;
*
* // Evaluation expression in the Electron context.
* const appPath = await electronApp . evaluate ( async ( electron ) = > {
* // This runs in the main Electron process, |electron| parameter
* // here is always the result of the require('electron') in the main
* // app script.
* return electron . getAppPath ( ) ;
* } ) ;
*
* // Get the first window that the app opens, wait if necessary.
* const window = await electronApp . firstWindow ( ) ;
* // Print the title.
* console . log ( await window . title ( ) ) ;
* // Capture a screenshot.
* await window . screenshot ( { path : 'intro.png' } ) ;
* // Direct Electron console to Node terminal.
* window . on ( 'console' , console . log ) ;
* // Click button.
* await window . click ( 'text=Click me' ) ;
* } ) ( ) ;
* ` ` `
*
* Note that since you don ' t need Playwright to install web browsers when testing Electron , you can omit browser download
* via setting the following environment variable when installing Playwright :
*
* ` ` ` sh js
* $ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = 1 npm i - D playwright
* ` ` `
*
* /
export interface Electron {
/ * *
* Launches electron application specified with the ` executablePath ` .
* @param options
* /
launch ( options ? : {
/ * *
* Additional arguments to pass to the application when launching . You typically pass the main script name here .
* /
args? : Array < string > ;
/ * *
* Current working directory to launch application from .
* /
cwd? : string ;
/ * *
* Specifies environment variables that will be visible to Electron . Defaults to ` process.env ` .
* /
env ? : { [ key : string ] : string ; } ;
/ * *
* Launches given Electron application . If not specified , launches the default Electron executable installed in this
* package , located at ` node_modules/.bin/electron ` .
* /
executablePath? : string ;
} ) : Promise < ElectronApplication > ;
}
2021-01-07 22:46:05 +03:00
/ * *
* [ FileChooser ] objects are dispatched by the page in the
2021-01-22 01:35:20 +03:00
* [ page . on ( 'filechooser' ) ] ( https : //playwright.dev/docs/api/class-page#pageonfilechooser) event.
2021-01-07 22:46:05 +03:00
*
* ` ` ` js
2021-01-20 19:12:39 +03:00
* const [ fileChooser ] = await Promise . all ( [
* page . waitForEvent ( 'filechooser' ) ,
* page . click ( 'upload' )
* ] ) ;
* await fileChooser . setFiles ( 'myfile.pdf' ) ;
2021-01-07 22:46: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 ;
/ * *
* 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 .
* @param files
* @param options
* /
setFiles ( files : string | Array < string > | {
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] name
2021-01-07 22:46:05 +03:00
* /
name : string ;
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] type
2021-01-07 22:46:05 +03:00
* /
mimeType : string ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-11 05:18:35 +03:00
* File content
2020-12-27 00:52:05 +03:00
* /
buffer : Buffer ;
} | Array < {
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] name
2020-12-27 00:52:05 +03:00
* /
name : string ;
/ * *
2021-01-11 05:18:35 +03:00
* [ File ] type
2020-12-27 00:52:05 +03:00
* /
mimeType : string ;
/ * *
2021-01-11 05:18:35 +03:00
* File content
2020-12-27 00:52:05 +03:00
* /
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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) methods.
2020-12-27 00:52:05 +03:00
* /
timeout? : number ;
} ) : Promise < void > ;
}
2021-01-07 22:46:05 +03:00
/ * *
* - extends : [ Browser ]
*
* Firefox browser instance does not expose Firefox - specific features .
* /
export interface FirefoxBrowser extends Browser {
}
2020-12-27 00:52:05 +03:00
/ * *
2020-12-29 23:12:46 +03:00
* Keyboard provides an api for managing a virtual keyboard . The high level api is
2021-01-22 01:35:20 +03:00
* [ keyboard . type ( text [ , options ] ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardtypetext-options), which takes
* raw characters and generates proper keydown , keypress / input , and keyup events on your page .
2020-12-28 18:03:09 +03:00
*
2021-01-22 01:35:20 +03:00
* For finer control , you can use [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboarddownkey),
* [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardupkey), and
* [ keyboard . insertText ( text ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardinserttexttext) 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-22 01:35:20 +03:00
* [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardupkey).
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-22 01:35:20 +03:00
* [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboarddownkey) 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-22 01:35:20 +03:00
* [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardupkey).
2020-12-27 00:52:05 +03:00
*
2021-01-12 23:14:27 +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 ( '嗨' ) ;
* ` ` `
*
2021-01-12 23:14:27 +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-22 01:35:20 +03:00
* Shortcut for [ keyboard . down ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboarddownkey) and
* [ keyboard . up ( key ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardupkey).
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-22 01:35:20 +03:00
* [ keyboard . press ( key [ , options ] ) ] ( https : //playwright.dev/docs/api/class-keyboard#keyboardpresskey-options).
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
* ` ` `
*
2021-01-12 23:14:27 +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 > ;
}
2021-01-07 22:46:05 +03:00
/ * *
* Playwright generates a lot of logs and they are accessible via the pluggable logger sink .
*
* ` ` ` 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 } ` )
* }
* } ) ;
* . . .
* } ) ( ) ;
* ` ` `
*
* /
export interface Logger {
/ * *
* Determines whether sink is interested in the logger with the given name and severity .
* @param name logger name
* @param severity
* /
isEnabled ( name : string , severity : "verbose" | "info" | "warning" | "error" ) : boolean ;
/ * *
* @param name logger name
* @param severity
* @param message log message format
* @param args message arguments
* @param hints optional formatting hints
* /
log ( name : string , severity : "verbose" | "info" | "warning" | "error" , message : string | Error , args : Array < Object > , hints : {
/ * *
* Optional preferred logger color .
* /
color? : string ;
} ) : void ;
}
2020-12-27 00:52:05 +03:00
/ * *
* 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
2021-01-22 01:35:20 +03:00
* [ page . mouse ] ( https : //playwright.dev/docs/api/class-page#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-22 01:35:20 +03:00
* Shortcut for [ mouse . move ( x , y [ , options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mousemovex-y-options),
* [ mouse . down ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mousedownoptions),
* [ mouse . up ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouseupoptions).
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-22 01:35:20 +03:00
* Shortcut for [ mouse . move ( x , y [ , options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mousemovex-y-options),
* [ mouse . down ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mousedownoptions),
* [ mouse . up ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouseupoptions),
* [ mouse . down ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mousedownoptions) and
* [ mouse . up ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-mouse#mouseupoptions).
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 ? : {
2021-01-07 22:46:05 +03:00
/ * *
* Defaults to ` left ` .
* /
button ? : "left" | "right" | "middle" ;
/ * *
* defaults to 1 . See [ UIEvent . detail ] .
* /
clickCount? : number ;
} ) : Promise < void > ;
2020-12-27 00:52:05 +03:00
}
/ * *
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 ] :
2021-01-22 01:35:20 +03:00
* - [ page . on ( 'request' ) ] ( https : //playwright.dev/docs/api/class-page#pageonrequest) emitted when the request is issued by
* the page .
* - [ page . on ( 'response' ) ] ( https : //playwright.dev/docs/api/class-page#pageonresponse) emitted when/if the response status
* and headers are received for the request .
* - [ page . on ( 'requestfinished' ) ] ( https : //playwright.dev/docs/api/class-page#pageonrequestfinished) 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 ) ,
2021-01-22 01:35:20 +03:00
* the [ page . on ( 'requestfailed' ) ] ( https : //playwright.dev/docs/api/class-page#pageonrequestfailed) event is emitted.
2020-12-27 00:52:05 +03:00
*
2021-01-12 23:14:27 +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
* /
2021-01-07 22:11:40 +03:00
postDataJSON ( ) : null | any ;
2020-12-27 00:52:05 +03:00
/ * *
* 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-22 01:35:20 +03:00
* [ request . redirectedFrom ( ) ] ( https : //playwright.dev/docs/api/class-request#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' ) ,
2021-01-14 18:48:56 +03:00
* page . goto ( 'http://example.com' )
2020-12-27 00:52:05 +03:00
* ] ) ;
* 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 ;
}
/ * *
2020-12-29 23:12:46 +03:00
* Whenever a network route is set up with
2021-01-22 01:35:20 +03:00
* [ page . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-page#pagerouteurl-handler) or
* [ browserContext . route ( url , handler ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextrouteurl-handler),
* 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
*
2021-01-09 03:17:54 +03:00
* @param options
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
continue ( options ? : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* If set changes the request HTTP headers . Header values will be converted to a string .
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
headers ? : { [ key : string ] : string ; } ;
2020-12-27 00:52:05 +03:00
/ * *
* If set changes the request method ( e . g . GET or POST )
* /
2021-01-07 22:46:05 +03:00
method? : string ;
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
* If set changes the post data of request
* /
postData? : string | Buffer ;
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* If set changes the request URL . New URL must have same protocol as original one .
2021-01-07 22:46:05 +03:00
* /
2021-01-09 03:17:54 +03:00
url? : string ;
2021-01-07 22:46:05 +03:00
} ) : Promise < void > ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fulfills route ' s request with given response .
*
* An example of fulfilling all requests with 404 responses :
*
* ` ` ` js
* await page . route ( '**\/*' , route = > {
* route . fulfill ( {
* status : 404 ,
* contentType : 'text/plain' ,
* body : 'Not Found!'
* } ) ;
* } ) ;
* ` ` `
*
* An example of serving static file :
*
* ` ` ` js
* await page . route ( '**\/xhr_endpoint' , route = > route . fulfill ( { path : 'mock_data.json' } ) ) ;
* ` ` `
*
2021-01-09 03:17:54 +03:00
* @param options
2020-12-27 00:52:05 +03:00
* /
2021-01-09 03:17:54 +03:00
fulfill ( options ? : {
2021-01-07 22:46:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* Response body .
2021-01-07 22:46:05 +03:00
* /
2021-01-09 03:17:54 +03:00
body? : string | Buffer ;
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
* If set , equals to setting ` Content-Type ` response header .
* /
contentType? : string ;
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* Response headers . Header values will be converted to a string .
2021-01-07 22:46:05 +03:00
* /
2021-01-09 03:17:54 +03:00
headers ? : { [ key : string ] : string ; } ;
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
2021-01-09 03:17:54 +03:00
* 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 .
2021-01-07 22:46:05 +03:00
* /
path? : string ;
2021-01-09 03:17:54 +03:00
/ * *
* Response status code , defaults to ` 200 ` .
* /
status? : number ;
2021-01-07 22:46:05 +03:00
} ) : Promise < void > ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* A request to be routed .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
request ( ) : Request ;
}
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
2021-01-22 01:35:20 +03:00
* Selectors can be used to install custom selector engines . See [ Working with selectors ] ( https : //playwright.dev/docs/selectors) for more
* information .
2021-01-07 22:46:05 +03:00
* /
export interface Selectors {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* An example of registering selector engine that queries elements based on a tag name :
*
* ` ` ` 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 ( ) ;
* } ) ( ) ;
* ` ` `
*
* @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
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
register ( name : string , script : Function | string | {
/ * *
* Path to the JavaScript file . If ` path ` is a relative path , then it is resolved relative to the current working
* directory . Optional .
* /
path? : string ;
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
* Raw script content . Optional .
* /
content? : string ;
} , options ? : {
/ * *
* 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 .
* /
contentScript? : boolean ;
} ) : Promise < void > ;
}
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +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 .
* /
export interface Touchscreen {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Dispatches a ` touchstart ` and ` touchend ` event with a single touch at the position ( ` x ` , ` y ` ) .
* @param x
* @param y
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
tap ( x : number , y : number ) : Promise < void > ;
}
2020-12-27 00:52:05 +03:00
2021-01-07 22:46:05 +03:00
/ * *
* When browser context is created with the ` videosPath ` option , each page has a video object associated with it .
*
* ` ` ` js
* console . log ( await page . video ( ) . path ( ) ) ;
* ` ` `
*
* /
export interface Video {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +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
* /
2021-01-07 22:46:05 +03:00
path ( ) : Promise < string > ;
}
/ * *
* - extends : [ Browser ]
*
* WebKit browser instance does not expose WebKit - specific features .
* /
export interface WebKitBrowser extends Browser {
2020-12-27 00:52:05 +03:00
}
2021-01-07 22:46:05 +03:00
/ * *
* The [ WebSocket ] class represents websocket connections in the page .
* /
export interface WebSocket {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket closes .
2020-12-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
on ( event : 'close' , listener : ( webSocket : WebSocket ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket recieves a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
on ( event : 'framereceived' , listener : ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket sends a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
on ( event : 'framesent' , listener : ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket has an error .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
on ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket closes .
2020-12-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
once ( event : 'close' , listener : ( webSocket : WebSocket ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket recieves a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
once ( event : 'framereceived' , listener : ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket sends a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
once ( event : 'framesent' , listener : ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket has an error .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
once ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
2020-12-27 01:31:41 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket closes .
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
addListener ( event : 'close' , listener : ( webSocket : WebSocket ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket recieves a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
addListener ( event : 'framereceived' , listener : ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket sends a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
addListener ( event : 'framesent' , listener : ( data : {
2020-12-27 01:31:41 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 01:31:41 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket has an error .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
addListener ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket closes .
2020-12-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
removeListener ( event : 'close' , listener : ( webSocket : WebSocket ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket recieves a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
removeListener ( event : 'framereceived' , listener : ( data : {
2020-12-27 01:31:41 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 01:31:41 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket sends a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
removeListener ( event : 'framesent' , listener : ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket has an error .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
removeListener ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
2020-12-27 01:31:41 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket closes .
2020-12-27 01:31:41 +03:00
* /
2021-01-22 20:58:31 +03:00
off ( event : 'close' , listener : ( webSocket : WebSocket ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket recieves a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
off ( event : 'framereceived' , listener : ( data : {
/ * *
* frame payload
* /
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket sends a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
off ( event : 'framesent' , listener : ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
2020-12-27 01:31:41 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket has an error .
2020-12-27 01:31:41 +03:00
* /
2021-01-07 22:46:05 +03:00
off ( event : 'socketerror' , listener : ( string : String ) = > void ) : this ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Indicates that the web socket has been closed .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
isClosed ( ) : boolean ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Contains the URL of the WebSocket .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
url ( ) : string ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket closes .
2020-12-27 00:52:05 +03:00
* /
2021-01-22 20:58:31 +03:00
waitForEvent ( event : 'close' , optionsOrPredicate ? : { predicate ? : ( webSocket : WebSocket ) = > boolean , timeout? : number } | ( ( webSocket : WebSocket ) = > boolean ) ) : Promise < WebSocket > ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket recieves a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
waitForEvent ( event : 'framereceived' , optionsOrPredicate ? : { predicate ? : ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > boolean , timeout? : number } | ( ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > boolean ) ) : Promise < {
2020-12-27 01:31:41 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 01:31:41 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} > ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket sends a frame .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
waitForEvent ( event : 'framesent' , optionsOrPredicate ? : { predicate ? : ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > boolean , timeout? : number } | ( ( data : {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} ) = > boolean ) ) : Promise < {
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* frame payload
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
payload : string | Buffer ;
} > ;
2020-12-27 00:52:05 +03:00
/ * *
2021-01-07 22:46:05 +03:00
* Fired when the websocket has an error .
2020-12-27 00:52:05 +03:00
* /
2021-01-07 22:46:05 +03:00
waitForEvent ( event : 'socketerror' , optionsOrPredicate ? : { predicate ? : ( string : String ) = > boolean , timeout? : number } | ( ( string : String ) = > boolean ) ) : Promise < String > ;
2020-12-27 00:52:05 +03:00
}
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-28 01:19:37 +03:00
* [ page . emulateMedia ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-page#pageemulatemediaoptions) for more details.
2021-01-22 01:35:20 +03:00
* 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-22 01:35:20 +03:00
* [ browserContext . grantPermissions ( permissions [ , options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextgrantpermissionspermissions-options)
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-22 01:35:20 +03:00
* [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextclose) for the 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
2021-01-22 01:35:20 +03:00
* sure to await [ browserContext . close ( ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextclose) for
2021-01-07 07:02:51 +03:00
* videos to be saved .
2020-12-27 00:52:05 +03:00
* /
recordVideo ? : {
/ * *
* Path to the directory to put videos into .
* /
dir : string ;
/ * *
2021-02-10 03:44:50 +03:00
* Optional dimensions of the recorded videos . If not specified the size will be equal to ` viewport ` scaled down to fit
* into 800 x800 . If ` viewport ` is not configured explicitly the video size defaults to 800 x450 . 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 ;
} ;
} ;
/ * *
2021-02-03 04:48:32 +03:00
* Populates context with given storage state . This option can be used to initialize context with logged - in information
2020-12-29 23:12:46 +03:00
* obtained via
2021-01-22 01:35:20 +03:00
* [ browserContext . storageState ( [ options ] ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextstoragestateoptions).
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 < {
name : string ;
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 ;
/ * *
2021-01-07 22:11:40 +03:00
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
2020-12-27 00:52:05 +03:00
* /
videoSize ? : {
/ * *
* Video frame width .
* /
width : number ;
/ * *
* Video frame height .
* /
height : number ;
} ;
/ * *
2021-01-07 22:11:40 +03:00
* * * DEPRECATED * * Use ` recordVideo ` instead .
* @deprecated
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 {
/ * *
2021-01-11 05:18:35 +03:00
* A browser websocket endpoint to connect to .
2020-12-27 00:52:05 +03:00
* /
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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout)
* or [ page . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-page#pagesetdefaulttimeouttimeout) 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-22 01:35:20 +03:00
* [ browserContext . setDefaultTimeout ( timeout ) ] ( https : //playwright.dev/docs/api/class-browsercontext#browsercontextsetdefaulttimeouttimeout).
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 ;
}