Wait for the selector
to appear in page. If at the moment of calling the method the selector
already exists, the method will return immediately. If the selector
doesn’t appear after the timeout
milliseconds of waiting, the function will throw.
class Page {
waitForSelector<Selector extends string>(
selector: Selector,
options?: WaitForSelectorOptions,
): Promise<ElementHandle<NodeFor<Selector>> | null>;
}
Parameter | Type | Description |
---|---|---|
selector | Selector | [selector](https://pptr.dev/guides/page-interactions#selectors) to query the page for. [CSS selectors](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors) can be passed as-is and a [Puppeteer-specific selector syntax](https://pptr.dev/guides/page-interactions#non-css-selectors) allows querying by [text](https://pptr.dev/guides/page-interactions#text-selectors--p-text), [a11y role and name](https://pptr.dev/guides/page-interactions#aria-selectors--p-aria), and [xpath](https://pptr.dev/guides/page-interactions#xpath-selectors--p-xpath) and [combining these queries across shadow roots](https://pptr.dev/guides/page-interactions#querying-elements-in-shadow-dom). Alternatively, you can specify the selector type using a [prefix](https://pptr.dev/guides/page-interactions#prefixed-selector-syntax). |
options | [WaitForSelectorOptions](./puppeteer.waitforselectoroptions.md) | _(Optional)_ Optional waiting parameters |
Returns:
Promise<ElementHandle<NodeFor<Selector>> | null>
Promise which resolves when element specified by selector string is added to DOM. Resolves to null
if waiting for hidden: true
and selector is not found in DOM.
The optional Parameter in Arguments options
are:
visible
: A boolean wait for element to be present in DOM and to be visible, i.e. to not have display: none
or visibility: hidden
CSS properties. Defaults to false
.
hidden
: Wait for element to not be found in the DOM or to be hidden, i.e. have display: none
or visibility: hidden
CSS properties. Defaults to false
.
timeout
: 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 Page.setDefaultTimeout() method.
This method works across navigations:
import puppeteer from 'puppeteer';
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
let currentURL;
page
.waitForSelector('img')
.then(() => console.log('First URL with image: ' + currentURL));
for (currentURL of [
'https://example.com',
'https://google.com',
'https://bbc.com',
]) {
await page.goto(currentURL);
}
await browser.close();
})();