首页 > 解决方案 > Node.js: puppeteer focus() 函数

问题描述

我正在尝试使用 puppeteer 登录该站点,然后在登录后使用其他一些东西。与站点的连接成功,但是函数 focus() 有问题。它需要一个选择器作为参数,但是在插入一个之后,它显示一个错误(选择器很好,因为我在站点的控制台中运行了 document.querySelector("input.login-field") 并返回了这个:) <input class="login-field" type="text" inputmode="email" autocapitalize="none" name="m" placeholder="Email or username" value="">。有什么问题?

这是我的代码:

const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch({headless: false, slowMo: 25});

const page = await browser.newPage();
await page.goto("site");
await page.focus("input.login-field");
await page.keyboard.type("information");
await browser.close();

})();

标签: javascriptnode.jswebpuppeteer

解决方案


如果您确定选择器是好的并且它在控制台中以 headful 模式工作,请尝试等到页面脚本被下载、启动并且所需的元素出现在 DOM 中:

await page.goto("site");
await page.waitForSelector('input.login-field'); // <-- wait until it exists
await page.focus("input.login-field");

推荐阅读