gpt4 book ai didi

google-chrome-devtools - 在 puppeteer 中如何等待 DOM 元素加载然后单击

转载 作者:行者123 更新时间:2023-12-04 00:25:34 27 4
gpt4 key购买 nike

在 puppeteer 中如何等待 DOM 元素加载然后单击。我正在尝试访问一个简单的页面,点击开始 按钮,然后会出现一个文本字段,我需要在该文本字段中输入内容。

代码如下。

const puppeteer = require('puppeteer');
const sleep = (waitTimeInMs) => new Promise(resolve => setTimeout(resolve, waitTimeInMs));

(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('https://janus.conf.meetecho.com/videocalltest.html');
await page.click('#start', {waitUntil: 'domcontentloaded'});
//await sleep(5000);
await page.type('#username', 'austin');
await sleep(5000);
await browser.close();
})();

但是,如果我 sleep 5 秒(在上面的代码中注释),那么我就可以在文本字段中输入。

我想避免 sleep 。请建议解决方法。

最佳答案

您需要等待元素可见,因为该元素存在于 DOM 中,但不可见。

这是有效的脚本:

(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('https://janus.conf.meetecho.com/videocalltest.html');
await page.click('#start');
await page.waitForSelector('#username', { visible: true });
await page.type('#username', 'austin');
// await browser.close(); // commented it just to make sure that text is typed in the input before close browser.
})();

关于google-chrome-devtools - 在 puppeteer 中如何等待 DOM 元素加载然后单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com