如何详细解释page.evaluate(pageFunction, ...args)函数的使用方法?

2026-04-01 18:571阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计362个文字,预计阅读时间需要2分钟。

如何详细解释page.evaluate(pageFunction, ...args)函数的使用方法?

`page.evaluate(pageFunction, ...args)`方法用于在页面实例上下文中执行JavaScript函数。函数`pageFunction`将在页面上下文中执行,并可以接收任意数量的参数(`...args`)。这些参数可以是可序列化的值(如数字、字符串、对象等)或JSHandle对象。

返回值是一个Promise对象,该对象最终会解析为`pageFunction`执行的返回值。例如:

javascriptpage.evaluate((selector)=> { return document.querySelector(selector).innerText;}, '#myElement');

如何详细解释page.evaluate(pageFunction, ...args)函数的使用方法?

page.evaluate(pageFunction, ...args)

  • pageFunction<[function]|[string]> 要在页面实例上下文中执行的方法
  • ...args<...[Serializable]|[JSHandle]> 要传给pageFunction的参数
  • 返回: <[Promise]<[Serializable]>>pageFunction执行的结果

如果pageFunction返回的是[Promise],page.evaluate将等待promise完成,并返回其返回值。

如果pageFunction返回的是不能序列化的值,将返回undefined

pageFunction传参数示例:

const result = await page.evaluate(x => { return Promise.resolve(8 * x); }, 7); // (译者注: 7 可以是你自己代码里任意方式得到的值) console.log(result); // 输出 "56"

也可以传一个字符串:

console.log(await page.evaluate(‘1 + 2‘)); // 输出 "3" const x = 10; console.log(await page.evaluate(`1 + ${x}`)); // 输出 "11"

[ElementHandle] 实例 可以作为参数传给page.evaluate:

const bodyHandle = await page.$(‘body‘); const html = await page.evaluate(body => body.innerHTML, bodyHandle); await bodyHandle.dispose();

本文共计362个文字,预计阅读时间需要2分钟。

如何详细解释page.evaluate(pageFunction, ...args)函数的使用方法?

`page.evaluate(pageFunction, ...args)`方法用于在页面实例上下文中执行JavaScript函数。函数`pageFunction`将在页面上下文中执行,并可以接收任意数量的参数(`...args`)。这些参数可以是可序列化的值(如数字、字符串、对象等)或JSHandle对象。

返回值是一个Promise对象,该对象最终会解析为`pageFunction`执行的返回值。例如:

javascriptpage.evaluate((selector)=> { return document.querySelector(selector).innerText;}, '#myElement');

如何详细解释page.evaluate(pageFunction, ...args)函数的使用方法?

page.evaluate(pageFunction, ...args)

  • pageFunction<[function]|[string]> 要在页面实例上下文中执行的方法
  • ...args<...[Serializable]|[JSHandle]> 要传给pageFunction的参数
  • 返回: <[Promise]<[Serializable]>>pageFunction执行的结果

如果pageFunction返回的是[Promise],page.evaluate将等待promise完成,并返回其返回值。

如果pageFunction返回的是不能序列化的值,将返回undefined

pageFunction传参数示例:

const result = await page.evaluate(x => { return Promise.resolve(8 * x); }, 7); // (译者注: 7 可以是你自己代码里任意方式得到的值) console.log(result); // 输出 "56"

也可以传一个字符串:

console.log(await page.evaluate(‘1 + 2‘)); // 输出 "3" const x = 10; console.log(await page.evaluate(`1 + ${x}`)); // 输出 "11"

[ElementHandle] 实例 可以作为参数传给page.evaluate:

const bodyHandle = await page.$(‘body‘); const html = await page.evaluate(body => body.innerHTML, bodyHandle); await bodyHandle.dispose();