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();
posted @ 2018-10-11 11:12  fang&&fang  阅读(6330)  评论(0编辑  收藏  举报