headless false - 始终关注地址栏
headless false - focus always on address bar
我正在使用带有 headless=false
选项的 puppeteer,以便让用户在表单中键入一些详细信息,然后以编程方式读取结果。
我希望 cursor/focus 在页面加载时出现在第一个输入字段上,但焦点始终在地址栏上。
有没有办法将 cursor/focus 移动到页面内?
我已经试过了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();
})();
我希望在页面加载后,用户将能够在输入字段中键入内容,而不必先 "move" 进入该字段(通过鼠标或 Tab)。
有一点需要更正,waitUntil
是page.goto
的一个选项:
await page.goto('https://www.w3schools.com/html/html_forms.asp',{waitUntil :"networkidle2"});
有了这个,您的示例就可以在 puppeteer 1.11 和节点 8.6 上正常工作
您遇到的问题是您将光标设置在页面内部,但浏览器本身的焦点仍在地址栏上。
要使浏览器聚焦页面本身,您需要调用 page.bringToFront()
,这会将浏览器的焦点设置到选项卡。您应该在创建页面后立即执行此操作:
const page = await browser.newPage();
await page.bringToFront();
此外,正如其他答案中已经指出的那样,您为 page.waitForSelector
函数提供了无效选项。这只是被 puppeteer 忽略了(与你的问题无关),但应该被删除。
我调用了 mouse.click() 函数将我的光标从地址栏移动到页面。
await page.mouse.click(0, 0);
browser.newPage() 的使用方式如我所料,但这种情况会占用更多内存。所以我使用 click() 函数。
我正在使用带有 headless=false
选项的 puppeteer,以便让用户在表单中键入一些详细信息,然后以编程方式读取结果。
我希望 cursor/focus 在页面加载时出现在第一个输入字段上,但焦点始终在地址栏上。
有没有办法将 cursor/focus 移动到页面内?
我已经试过了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();
})();
我希望在页面加载后,用户将能够在输入字段中键入内容,而不必先 "move" 进入该字段(通过鼠标或 Tab)。
有一点需要更正,waitUntil
是page.goto
的一个选项:
await page.goto('https://www.w3schools.com/html/html_forms.asp',{waitUntil :"networkidle2"});
有了这个,您的示例就可以在 puppeteer 1.11 和节点 8.6 上正常工作
您遇到的问题是您将光标设置在页面内部,但浏览器本身的焦点仍在地址栏上。
要使浏览器聚焦页面本身,您需要调用 page.bringToFront()
,这会将浏览器的焦点设置到选项卡。您应该在创建页面后立即执行此操作:
const page = await browser.newPage();
await page.bringToFront();
此外,正如其他答案中已经指出的那样,您为 page.waitForSelector
函数提供了无效选项。这只是被 puppeteer 忽略了(与你的问题无关),但应该被删除。
我调用了 mouse.click() 函数将我的光标从地址栏移动到页面。
await page.mouse.click(0, 0);
browser.newPage() 的使用方式如我所料,但这种情况会占用更多内存。所以我使用 click() 函数。