• 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

  • 相关阅读:
    Flasback数据库(闪回数据库)
    Oracle回收站
    PL/SQL中如何执行DDL、SCL?
    oracle中的隐式提交(auto commit)
    raise_application_error用法
    sqlplus中"-S"和"-L"用法
    愿随君,走天涯
    你的过去,我不曾参与;你的未来,与你紧相依
    Oracle中SAVEPOINT和ROLLBACK用法
    Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/15469952.html
Copyright © 2020-2023  润新知