我试图在网站上键入我的用户名,但是输入框在iframe内部,我尝试了此代码来定位iframe内部的元素,但我一直遇到错误 JSHandles can be evaluated only in the context they were created!
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto("www.examplesite.com", { waitUntil: 'networkidle0' })
await sleep(1000)
const myframe = await page.frames()[2];
const userselector = await myframe.$('input[name="usernameinput"]')
await page.type(userselector, "myusername")
await page.screenshot({path: 'example.png'});
await browser.close();
})();
type
功能期望选择器字符串而不是句柄。因此,由于框架还具有type
函数,因此您可以执行:
await myframe.type('input[name="usernameinput"]', "myusername")