网页有一个按钮,puppeteer 必须在按钮变得可见时尽快单击该按钮。这个按钮并不总是可见的,它同时对每个人都可见。所以我必须不断刷新才能发现该按钮变得可见。我在下面写了这个脚本来做到这一点:
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox']
});
const page = await browser.newPage()
await page.setViewport({ width: 1920, height: 1080})
//I am calling my pageRefresher method here
async function pageRefresher(page,browser, url) {
try {
await page.goto(url, {waitUntil: 'networkidle2'})
try {
await page.waitForSelector('#ourButton', {timeout: 10});
await page.click('#ourButton')
console.log(`clicked!`)
await browser.close()
} catch (error) {
console.log('catch2 ' + counter + ' ' + error)
counter += 1
await pageRefresher(page, browser, url)
}
}catch (error) {
console.log('catch3' + error)
await browser.close();
}
}
如您所见,我的方法是递归的。它转到那个页面并寻找那个按钮。如果没有按钮,则它会再次调用自身以重做相同的工作,直到找到并单击该按钮。
实际上它现在运作良好。但它很慢。我正在运行此脚本,同时我在我的桌面 chrome 上打开同一页面,并且我开始手动刷新该页面。我总是赢,我总是在木偶师面前点击那个按钮。
我怎样才能加快这个过程?脚本不应该输给只有手动控制(如 F5 按钮)的人。
婷婷同学_
翻翻过去那场雪
三国纷争
相关分类