Page.waitForSelector() 方法
等待页面中出现 selector
。如果在调用该方法时 selector
已经存在,该方法将立即返回。如果在等待 timeout
毫秒后 selector
仍然没有出现,该函数将抛出异常。
签名:
class Page {
waitForSelector<Selector extends string>(
selector: Selector,
options?: WaitForSelectorOptions
): Promise<ElementHandle<NodeFor<Selector>> | null>;
}
参数
参数 | 类型 | 描述 |
---|---|---|
selector | 选择器 | 要等待的元素的 选择器 |
options | WaitForSelectorOptions | (可选) 可选的等待参数 |
返回值
Promise<ElementHandle<NodeFor<Selector>> | null>
当 DOM 中添加了选择器字符串指定的元素时,该 Promise 将解析。如果等待隐藏:true
并且 DOM 中没有找到选择器,则解析为 null
。
备注
参数 options
中可选的参数是
-
visible
:一个布尔值,等待元素出现在 DOM 中并可见,即没有display: none
或visibility: hidden
CSS 属性。默认为false
。 -
hidden
:等待元素未在 DOM 中找到或隐藏,即具有display: none
或visibility: hidden
CSS 属性。默认为false
。 -
timeout
:以毫秒为单位的最大等待时间。默认为30000
(30 秒)。传递0
以禁用超时。可以使用 Page.setDefaultTimeout() 方法更改默认值。
示例
此方法适用于所有导航
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();
})();