如何使用 Puppeteer 单击 PDF 页面上的下载按钮?

How can you click on the download button on a PDF page with Puppeteer?

我在浏览器中打开一个 PDF 页面,我正在尝试单击右上角的下载按钮。为了清楚起见,添加了这张照片。我试过右键单击按钮,同时选择 CSS 选择器和 XPath,但在我的代码中,它没有显示为元素。我做错了什么?

这是我的参考代码。

page.goto(url);
page.click([link that opens up new tab]);
const [tab1, tab2, tab3] = await browser.pages();
await tab3.click("#download");

你可以使用这个非常简单的代码:

from urllib import request

url = 'https://dagrs.berkeley.edu/sites/default/files/2020-01/sample.pdf'
request.urlretrieve(url, 'sample.pdf')

我设法使用此处发布的第二个解决方案解决了我的问题:How to download a pdf that opens in a new tab in puppeteer?。基本上,使用 puppeteer extra,我更改了单击 link 以手动触发下载的行为。

puppeteer.use(require('puppeteer-extra-plugin-user-preferences')({
    headless: false, 
    timeout: 30000, 
    ignoreHTTPSErrors: true, 
    userPrefs: {
        download: {
            prompt_for_download: false, 
            open_pdf_in_system_reader: true
        }, 
        plugins: {
            always_open_pdf_externally: true
        }
    } 
}));
let browser = await puppeteer.launch();
let page = await browser.newPage();
...
await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './'});

感谢您的帮助!