当前位置: 首页 > 面试题库 >

在正常启动时,浏览器可以变成无头执行吗,反之亦然?

云季同
2023-03-14
问题内容

我想无头启动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'});

问题答案:

简短的答案:不可能

Chrome仅允许以 无头无头 模式启动浏览器。启动浏览器时必须指定它,并且无法在运行时进行切换。

可能的是启动第二个浏览器并重用第一个浏览器中的cookie(和任何其他数据)。

长答案

您将假设您可以在调用时重用数据目录puppeteer.launch,但是由于存在多个错误(在puppeteer存储库中为#1268和#1270),当前无法实现此目的。

因此,最好的方法是保存需要在浏览器实例之间共享的任何cookie或本地存储数据,并在启动浏览器时还原数据。然后,您第二次访问该网站。请注意,当您重新爬网页面时,网站在JavaScript变量方面的任何状态都将丢失。

处理

总结起来,整个过程应该是这样的(反之亦然)

  • 以无头模式爬行,直到您要切换模式
  • 序列化cookie
  • 启动或重用第二个浏览器(无头模式)
  • 还原Cookie
  • 重新访问页面
  • 继续爬行


 类似资料:
  • 我尝试了以下testng.xml文件,它指向一个运行类,然后指向多个特性文件,但没有成功:/

  • 问题内容: 我的目标是运行来自Jenkins的基于自动化的Selenium Webdriver,但是jenkins在构建作业时无法打开浏览器。所以我修改了代码以使其在无头模式下运行。自实施无头浏览器以来,存在一些大问题 可以在无头浏览器上处理端到端业务?导致端到端需要检查元素作为过程 如果无头浏览器无法处理,您有什么建议吗? 谢谢,我对自动化的集成程度很低 问题答案: 您无需更改代码即可在无头模式

  • 问题内容: 我正在寻找一种在客户端(即在浏览器中)进行traceroute的方法。 据我所知,不可能通过Javascript或Flash发送具有任意TTL值的ICMP,UDP或TCP数据包。我知道Flash允许通过Actionscript中的Socket类进行TCP连接,但是它对于traceroute实现似乎没有用。 是开发浏览器插件的唯一解决方案吗? 编辑 :我刚刚发现它已经用Java小程序完成

  • 问题内容: 我刚接触selenium。我生成了我的第一个Javaselenium测试用例,它已成功编译。但是当我运行该测试时,我得到了以下RuntimeException 请告诉我如何解决此错误。 这是我要运行的Java文件。 我首先通过命令提示符启动了selenium服务器,然后通过另一个命令提示符执行了上述java文件。 第二个问题:我可以右键单击包含selenium的网页上的指定位置。 问题

  • 问题内容: 是否有可用的编程库来解析HTML文档,执行JavaScript,然后允许我浏览DOM?这需要在服务器端而非客户端执行。任何语言都可以,但是首选Java,PHP或Ruby。 问题答案: 在Java中:http : //lobobrowser.org/cobra/java-html- parser.jsp 这是一个可识别Javascript,可识别CSS的HTML解析器 ,它与您的问题有关

  • 我对詹金斯真的很陌生。今天我安装并尝试玩。当然我丢了一把钥匙。 我的环境:java-version java version“1.6.0\u 24”OpenJDK Runtime environment(IcedTea6 1.11.4)(rhel-1.49.1.11.4.el6\u 3-x86\u 64)OpenJDK 64位服务器虚拟机(构建20.0-b12,混合模式) tomcat6型 Cen