Test Cafe 如何使用 headless 浏览器

发表时间 ·

testcafe 可以方便用来执行页面的自动化动作,而自动化离不开在命令行下执行。所以使用 testcafe 的必然选择是使用 headless (无界面)浏览器。

无界面浏览器

headless(无界面)浏览器在其他文章( seleniumPuppeteer)里介绍过,十分便于自动化执行浏览器动作。下面我们看 testcafe 是如何使用headless 浏览器的。

使用 chromium

安装 chromium

在 debian/ubuntu 系统中命令行界面下安装 chrome(实际上是 chromium),使用下面的命令:

$ sudo apt install chromium

在 CentOs 系统中使用:

$ sudo yum install chromium

安装好后提示:

Installed:
  chromium.x86_64 0:78.0.3904.108-1.el7

Dependency Installed:
  adwaita-cursor-theme.noarch 0:3.28.0-1.el7    adwaita-icon-theme.noarch 0:3.28.0-1.el7            at-spi2-atk.x86_64 0:2.26.2-1.el7
  at-spi2-core.x86_64 0:2.28.0-1.el7            audit-libs-python.x86_64 0:2.8.5-4.el7              avahi.x86_64 0:0.6.31-19.el7
  cairo-gobject.x86_64 0:1.15.12-4.el7          checkpolicy.x86_64 0:2.5-8.el7                      chromium-common.x86_64 0:78.0.3904.108-1.el7
  chromium-libs.x86_64 0:78.0.3904.108-1.el7    chromium-libs-media.x86_64 0:78.0.3904.108-1.el7    colord-libs.x86_64 0:1.3.4-1.el7
  dconf.x86_64 0:0.28.0-4.el7                   gstreamer1.x86_64 0:1.10.4-2.el7                    gtk3.x86_64 0:3.22.30-3.el7
  json-glib.x86_64 0:1.4.2-2.el7                libXScrnSaver.x86_64 0:1.2.2-6.1.el7                libcanberra.x86_64 0:0.30-5.el7
  libcanberra-gtk3.x86_64 0:0.30-5.el7          libcgroup.x86_64 0:0.41-21.el7                      libepoxy.x86_64 0:1.5.2-1.el7
  libgusb.x86_64 0:0.2.9-1.el7                  libsemanage-python.x86_64 0:2.5-14.el7              libtdb.x86_64 0:1.3.16-1.el7
  libtool-ltdl.x86_64 0:2.4.2-22.el7_3          libwayland-cursor.x86_64 0:1.15.0-1.el7             libwayland-egl.x86_64 0:1.15.0-1.el7
  libxkbcommon.x86_64 0:0.7.1-3.el7             minizip.x86_64 0:1.2.7-18.el7                       nss-mdns.x86_64 0:0.14.1-1.el7
  policycoreutils-python.x86_64 0:2.5-33.el7    python-IPy.noarch 0:0.75-6.el7                      rest.x86_64 0:0.8.1-2.el7
  setools-libs.x86_64 0:3.3.8-4.el7             sound-theme-freedesktop.noarch 0:0.8-3.el7          xkeyboard-config.noarch 0:2.24-1.el7

Dependency Updated:
  atk.x86_64 0:2.28.1-1.el7                       audit.x86_64 0:2.8.5-4.el7                       audit-libs.i686 0:2.8.5-4.el7
  audit-libs.x86_64 0:2.8.5-4.el7                 cairo.x86_64 0:1.15.12-4.el7                     libselinux.i686 0:2.5-14.1.el7
  libselinux.x86_64 0:2.5-14.1.el7                libselinux-devel.x86_64 0:2.5-14.1.el7           libselinux-python.x86_64 0:2.5-14.1.el7
  libselinux-ruby.x86_64 0:2.5-14.1.el7           libselinux-utils.x86_64 0:2.5-14.1.el7           libsemanage.x86_64 0:2.5-14.el7
  libsepol.i686 0:2.5-10.el7                      libsepol.x86_64 0:2.5-10.el7                     libsepol-devel.x86_64 0:2.5-10.el7
  policycoreutils.x86_64 0:2.5-33.el7             zlib.i686 0:1.2.7-18.el7                         zlib.x86_64 0:1.2.7-18.el7
  zlib-devel.x86_64 0:1.2.7-18.el7

Complete!
使用 chromium

安装好后可以在命令行调用验证是否安装成功:

$ chromium --headless --disable-gpu --dump-dom https://www.example.com/

得到下面的结果,说明已经正常安装了:

[1126/174644.157079:WARNING:audio_manager.cc(321)] Multiple instances of AudioManager detected
[1126/174644.157165:WARNING:audio_manager.cc(278)] Multiple instances of AudioManager detected

<div>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this
    domain in literature without prior coordination or asking for permission.</p>
    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
报错信息处理

上面两行 audio_manager.cc 报错需要安装 pulseaudio 解决:

$ sudo apt-get install pulseaudio

安装 pulseaudio 后,运行于后台:

$ pulseaudio --daemonize

就可以消除报错信息。

用 testcafe 调用

安装好 chromium 后,就可以用 testcafe 调用:

//package.json

"scripts": {
     "test": "testcafe chromium:headless \"./test/*.test.ts\"",
  },

使用 testcafe docker 镜像


相关文章

  除非特别说明,本站文章都来自原创,并采用 署名协议 CC-BY 授权。欢迎转载,请保留原文链接