【问题标题】:How can I use page.type() inside page.evaluate() in puppeteer?如何在 puppeteer 中的 page.evaluate() 中使用 page.type()?
【发布时间】:2021-04-03 14:17:05
【问题描述】:
我正在制作一个 Facebook Messenger 'Bot'。我需要评估发送给机器人的最后一条消息,并回复它。收听新消息很简单,但我该如何回应?我试过 :newMessage.textContent = 'Hi' 然后提交。但这不起作用。当然还有 page.type()
不能在 page.evaluate() 中工作
请帮忙
【问题讨论】:
标签:
javascript
node.js
web-scraping
puppeteer
【解决方案1】:
不确定这是否是最简单的解决方案,但你可以这样做)
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({ headless: false, defaultViewport: null });
const html = `
<!doctype html>
<html>
<head><meta charset='UTF-8'><title>Test</title></head>
<body>
<input>
</body>
</html>`;
try {
const [page] = await browser.pages();
await page.goto(`data:text/html,${html}`);
await page.exposeFunction('puppeteerType', async (text) => {
await page.type('input', text);
});
await page.evaluate(async () => {
await window.puppeteerType('Hi from page.type().');
});
} catch (err) { console.error(err); }