我正在使用带有headless=false选项的puppeteer ,以便让用户在表单中输入一些详细信息,然后以编程方式读取结果。我希望在加载页面时光标/焦点将位于第一个输入字段上,但焦点始终位于地址栏上。有没有办法在页面内移动光标/焦点?
我已经试过了await page.focus(selector)。请找到以下示例:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: false});
const page = await browser.newPage();
let selector = ".w3-white.w3-padding.notranslate>form>input[name='firstname']";
await page.goto('https://www.w3schools.com/html/html_forms.asp');
await page.waitForSelector(selector,{waitUntil :"networkidle2"});
await page.focus(selector);
await page.type(selector,"aaa");
//await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)
我希望在页面加载后,用户将能够在输入字段内输入,而不必先“移动”到该字段中(通过鼠标或选项卡)。
您遇到的问题是您将光标设置在页面内,但浏览器本身的焦点仍然在地址栏上。
要使浏览器聚焦页面本身,您需要调用page.bringToFront()which 将浏览器的焦点设置为选项卡。您应该在像这样创建页面后立即执行此操作:
const page = await browser.newPage();
await page.bringToFront();
Run Code Online (Sandbox Code Playgroud)
此外,正如其他答案中已经指出的那样,您为该page.waitForSelector函数提供了无效选项。puppeteer 只是忽略了这一点(与您的问题无关),但应该将其删除。
| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |