zoukankan      html  css  js  c++  java
  • Chrome Headless模式(一)

    前言:

    最近在做webUI的自动化,当本地执行脚本时,会启动浏览器的UI界面,导致其他工作无法进行。并且当电脑锁屏时,chromer driver 会退出,无法继续执行。查网上的资料,headerless Browser模式可以在后台运行浏览器。

    1、Headerless Browser是什么鬼?

    Headerless Browser(无头的浏览器)是浏览器的无界面状态,可以在不打开浏览器GUI的情况下,使用浏览器支持的性能。

    Chrome Headless相比于其他的浏览器,可以更便捷的运行web自动化,编写爬虫、截图等。通常是由编程或者命令行来控制的。

    好处: 

        可以加快UI自动化测试的执行时间,对于UI自动化测试,少了真实浏览器加载css,js以及渲染页面的工作。无头测试要比真实浏览器快的多。

        可以在无界面的服务器或CI上运行测试,减少了外界的干扰,使自动化测试更稳定。

    2、命令行模式运行

    我本地的环境:

    • 系统:mac
    • chrome浏览器版本:

    命令行启动chrome:

    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --remote-debugging-port=9222 https://www.baidu.com

    参数说明:

    • --headless:无头模式,就是无界面模式运行
    • --remote-debugging-port:开启远程调试,端口9222和我们之前转发出来的端口一致
    • --user-data-dir:设置独立的文件保存目录,建议一个网站一个目录
    • --crash-dumps-dir:设置的crash文件保存目录

      如果没有指定crash-dumps-dir可能会报错。

      ERROR:xattr.cc(64)] setxattr org.chromium.crashpad.database.initialized on file /var/folders/gx/1m0t1z_d03dg4pjhv7bwwt_c0000gp/T/: Operation not permitted (1)

    加上crash-dumps-dir参数,命令如下:

    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --headless --crash-dumps-dir=/Users/work/baidu http://www.baidu.com/

     验证是否成功开启headless chrome 的服务:

      随意打开一个浏览器窗口,输入http://localhost:9222,如果看到如下效果,就说明成功开启。

          

    3、连接远程端口

    如果是本机调试,直接打开:http://localhost:9222/json,效果如下图所示:

     

     打开http://localhost:9222/json可以看到有一个devtoolsFrontendUrl,那就是开发者工具的前端地址,就是一个html应用,url里面传过去WebSocket调试地址。打开这个地址就可以看到熟悉的开发者工具了!注意:这个窗口调试的是远程chrome上的页面。

    其他的一些已知接口:

    4、截图

    截图命令:--screenshot命令

    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome  --headless --crash-dumps-dir=/Users/work/baidu --screenshot http://www.baidu.com/

    使用--screenshot命令会在当前工作目录中保存截图为screenshot.png

  • 相关阅读:
    Replication:The replication agent has not logged a progress message in 10 minutes.
    分区管理
    获取URL最后一个 ‘/’ 之后的字符
    Replication 第四篇:事务复制中Subscriber的主键列是只读的
    窗口和窗口函数
    SQL Server 日期格式和日期操作
    约束4:唯一约束,Check约束和null
    约束3:default约束
    Merge语句中NULL的陷阱
    查询“全部”
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/15469952.html
Copyright © 2011-2022 走看看