【发布时间】:2020-05-14 09:01:33
【问题描述】:
我在 html 中有以下元素。
<a title="Download photo" href="https://example.com/photos/GXqvtQh1N9A/download?force=true" rel="nofollow" download="" target="_blank" class="_1QwHQ _1l4Hh _1CBrG _1zIyn xLon9 _1Tfeo _2L6Ut _2Xklx"><svg class="Apljk _11dQc" version="1.1" viewBox="0 0 32 32" width="32" height="32" aria-hidden="false"></a>
在 Chromium 打开时从控制台。 我可以这样查询:
document.querySelector('a[title="Download photo"]');
我可以创建对它的引用:
var link = document.querySelector('a[title="Download photo"]');
然后我可以像这样点击它:
link.click();
我在 Puppeteer.js 的代码中尝试了同样的事情。同一页。
for (const handle of getAllElements) {
try {
await handle.click();
const downloadButton = await page.$('a[title="Download photo"]');
downloadButton.click();
await sleep.sleep(2000);
} catch (e) {
console.error(e);
}
}
初始的 handle.click() 有效,它打开了我在这里讨论的页面。 但是然后 downloadButton.click() 不起作用。 我也试过 page.click(downloadButton)。 我也试过:
const downloadButton = await page.$('a[title="下载照片"]'); 等待下载按钮.click();
为确保我使用的是同一个页面,我在页面显示在屏幕上时直观地执行此操作。
有什么想法吗?
【问题讨论】:
-
elementHandle.click()返回一个承诺:应该是await downloadButton.click()。 -
我尝试了同样的事情,它只是挂起。我应该把它放在问题中,对不起@mbit
-
它可以点击吗?就我所见,它没有文字。
-
是的,它是可点击的。 unsplash.com/photos/GXqvtQh1N9A是右上角的下载按钮。
-
与我发送的链接的唯一区别是它出现在原始主页的灯箱中。
标签: puppeteer