Javascript 如何使单击操作在输入框中填充值之前等待?
我正在使用木偶师填充输入框,单击按钮并转到下一页。但问题是,有时输入值太长,在值完全插入到输入框之前,按钮被单击。如何解决这个问题Javascript 如何使单击操作在输入框中填充值之前等待?,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我正在使用木偶师填充输入框,单击按钮并转到下一页。但问题是,有时输入值太长,在值完全插入到输入框之前,按钮被单击。如何解决这个问题 await page.keyboard.type('input value'); //input await page.click('#btn'); //button to clicked await page.waitForNavigation({ waitUntil: 'networkidle2' }); await page.waitFor(1000);
await page.keyboard.type('input value'); //input
await page.click('#btn'); //button to clicked
await page.waitForNavigation({ waitUntil: 'networkidle2' });
await page.waitFor(1000);
很抱歉,我不能添加注释,我真的需要知道在第一行代码之前是什么,但我假设是对您的输入的关注,所以会给您一个提示 问题出在键盘上。键入我们没有承诺,测试将继续运行。因此,我们需要删除focus和keyboard.type,并使用page.typeselector,text[,options]: 随着时间的推移,这些问题将变得越来越普遍,因此我在我的项目中也添加了20毫秒的减速;影响不大
puppeteer.launch({slowMo: 20}).then(async browser => {...}
这是可行的,但它创建了另一个错误:node:7939 UnhandledPromisejectionWarning:Unhandled promise拒绝id:1:error:Navigation Timeout Oversed:30000ms当我转到另一个页面时,它停止了。很好,问题出在另一个地方。很难知道我们没有所有的代码。但是首先检查waitForNavigation,使用这两行中的一行:wait page.waitForNavigation{waitUntil:'networkidle0'};或者等待page.waitForNavigation{waitUntil:'load'};。个人负担对我来说很有用。
puppeteer.launch({slowMo: 20}).then(async browser => {...}