docker部署web自动化工具 —— selenium

编辑于 2022-05-28 15:40 阅读 1900

引用官方的一段话

Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。

它提供了扩展来模拟用户与浏览器的交互,用于扩展浏览器分配的分发服务器, 以及用于实现 W3C WebDriver 规范 的基础结构, 该 规范 允许您为所有主要 Web 浏览器编写可互换的代码。

Selenium 的核心是 WebDriver,这是一个编写指令集的接口,可以在许多浏览器中互换运行。

独立模式

部分docker-compose

  chrome:
#    selenium/standalone-firefox:4.1.4-20220427
#    selenium/standalone-edge:4.1.4-20220427
    image: selenium/standalone-chrome:4.1.4-20220427
    shm_size: 2gb
    container_name: standalone-chrome
    ports:
      - "4444:4444"
      - "7900:7900"
      - "5900:5900"
    environment:
      - VNC_VIEW_ONLY=1 #查看模式
      - VNC_NO_PASSWORD=1 #取消密码验证

Hub + Nodes模式

部分docker-compose

  selenium-hub:
    image: selenium/hub:4.1.4-20220427
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"

  chrome:
#    selenium/node-edge:4.1.4-20220427
#    selenium/node-firefox:4.1.4-20220427
    image: selenium/node-chrome:4.1.4-20220427
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
      - VNC_VIEW_ONLY=1 #查看模式
      - VNC_NO_PASSWORD=1 #取消密码验证
    ports:
      - "7900:7900"
      - "5900:5900"

视频录制

可以使用selenium/video:ffmpeg-4.3.1-20220427 Docker 映像记录测试执行情况。每个运行浏览器的容器都需要一个容器。

  • 不支持无头浏览器的视频录制。
  • 停止并删除容器后,您应该会在机器的./videos目录上看到一个视频文件。

部分docker-compose

  chrome_video:
    image: selenium/video:ffmpeg-4.3.1-20220427
    volumes:
      - ./videos:/videos
    depends_on:
      - chrome
    environment:
      - DISPLAY_CONTAINER_NAME=chrome
      - FILE_NAME=chrome_video.mp4

启动服务

docker-compose up -d

常用链接

Hub 控制台
http://localhost:4444/grid/console

节点状态
http://localhost:4444/wd/hub/status

要查看容器内发生的情况,请访问
http://localhost:7900
密码:secret

调试

该项目使用 x11vnc 作为 VNC 服务器,以允许用户检查容器内发生的情况。用户可以通过两种方式连接到该服务器

如果您收到要求输入密码的提示,它是:secret

使用 VNC 客户端

Download VNC Viewer

全平台支持:WindowsmacOSLinuxRaspberry PiiOSAndroidSolarisHP-UXAIX

连接localhost:5900,如下

20220527144340.png

使用浏览器(不需要 VNC 客户端)

连接http://localhost:7900/,如下

20220527144936.png

测试脚本

Selenium 支持很多语言:JavaPythonCSharpRubyJavaScriptKotlin

下面以JavaScriptPython为例,写一个截屏的小demo

详见:https://github.com/chudaozhe/docker-selenium/tree/master/examples

代码

https://github.com/chudaozhe/docker-selenium

参考

https://github.com/SeleniumHQ/docker-selenium

脚本例子 https://github.com/SeleniumHQ/seleniumhq.github.io/tree/trunk/examples

https://www.selenium.dev/zh-cn/documentation/

广而告之,我的新作品《语音助手》上架Google Play了,欢迎下载体验