使用操纵符浏览器WSEndpoint上载文件

问题描述 投票:0回答:1

我正在尝试使用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});

很遗憾,我对浏览器WSEndpoint感到迷茫,我使用了此信息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
1个回答
0
投票

如果您是连接到该浏览器的唯一客户端,则必须连接到不支持fileChooser的浏览器。您应该连接到Chromium 77.0.3844.0(r674921)或更高版本。

© www.soinside.com 2019 - 2024. All rights reserved.