【发布时间】:2019-11-19 18:40:40
【问题描述】:
我正在尝试使用 puppeteer 和 browserWSEndpoint 上传文件,我收到的错误消息是 “未捕获(承诺)错误:文件选择器处理不适用于同一页面的多个连接”。 这是我的代码:
const puppeteer = require('puppeteer');
async function getTest() {
const browser = await puppeteer.connect({
browserWSEndpoint: 'wss://chrome.browserless.io'
});
const page = (await browser.pages())[0];
await page.goto('https://someWebSite');
//DO STUFF
console.log("before upload"); //code runs until here
const [fileChooser] = await Promise.all([page.waitForFileChooser(),page.click('#uploadTrigger'),]);
await fileChooser.accept(['C:\\myProgram\\pic.jpg']);
await page.click('#edit-submit');
}
getTest().then(console.log);
我必须提到,如果我不使用 browserWSEndpoint,而是在开头使用此代码,一切正常。
const browser = await puppeteer.launch({headless: false, defaultViewport:null});
老实说,我对 browserWSEndpoint 很迷茫,我使用了这篇文章中的信息 How to run Puppeteer code in any web browser? 这导致我访问 browserless.io,复制了代码并且它可以工作。
现在这是我的确切问题,我的错误表明不适用于同一页面的多个连接。我究竟如何连接多个连接?也许我可以解决这个问题,然后我可以使用 const [fileChooser]。 我的主要问题是我需要使用无浏览器上传文件
根据https://github.com/GoogleChrome/puppeteer/issues/4783,其他人似乎也有同样的问题,但如果我想使用无浏览器,则不能使用 chromuim
【问题讨论】:
标签: javascript node.js puppeteer google-chrome-headless