我想无头启动Chrome浏览器,执行一些自动化操作,然后在执行其余操作之前将其打开。
使用Puppeteer可以做到吗,如果可以,你能告诉我如何吗?如果不是这样,是否还有其他用于浏览器自动化的框架或库可以做到这一点?
到目前为止,我已经尝试了以下方法,但是没有用。
const browser = await puppeteer.launch({'headless': false});
browser.headless = true;
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'});
await page.pdf({path: 'hn.pdf', format: 'A4'});
答案 0 :(得分:2)
Chrome仅允许以 headless 或 non-headless 模式启动浏览器。启动浏览器时必须指定它,并且在运行时无法切换。
可能的是,启动第二个浏览器并重用第一个浏览器中的cookie(以及任何其他数据)。
您会假设您可以在调用puppeteer.launch
时重用数据目录,但是由于存在多个错误(操纵up回购中的#1268,#1270),当前无法实现。
因此,最好的方法是在浏览器实例之间共享save any cookies或您需要在浏览器实例之间共享的本地存储数据,并在启动浏览器时还原数据。然后,您第二次访问该网站。请注意,当您重新爬网页面时,网站在JavaScript变量方面的任何状态都将丢失。
总结起来,整个过程应该像这样(反之亦然,无头到头):