惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
aimingoo的专栏
aimingoo的专栏
I
InfoQ
IT之家
IT之家
罗磊的独立博客
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
博客园_首页
Engineering at Meta
Engineering at Meta
Martin Fowler
Martin Fowler

晚花行乐

马克卡尼在2026年达沃斯论坛上的讲话(阅读材料) | 晚花行乐 鸡娃如何用力才是恰到好处 | 晚花行乐 读万卷书,行万里路的辩证关系 | 晚花行乐 反对培训机构掐尖招生 | 晚花行乐 小泽和建国会谈最后10分钟全文(阅读材料) | 晚花行乐 来看看 DeepSeek 怎么鸡娃 | 晚花行乐 谈谈基本功 | 晚花行乐 惠普 ProDesk SFF PC 各系列参数对比 | 晚花行乐 解决瘦客户机上安装 Debian 12 启动失败问题 | 晚花行乐 意拾喻言:老外写的文言文 | 晚花行乐 笠翁对韵中的典故(十三元) | 晚花行乐 谈谈中考取消四小门 | 晚花行乐 亚马逊云科技产品免费试用攻略(3) - 对象存储服务 | 晚花行乐 在 Windows 10 LTSC 版本上安装 WSL2 | 晚花行乐 Debian 12 的常用配置项 | 晚花行乐 在 Debian 12 上安装 Nvidia 显卡驱动程序 | 晚花行乐 解决 Debian 12 关机失败问题 | 晚花行乐 解决 VS Code 自动更新版本后卡在连接界面 | 晚花行乐 观看巴黎奥运会有感 | 晚花行乐 在 Windows10 上安装惠普旧打印机驱动程序 | 晚花行乐 欢迎关注公众号:晚花行乐 | 晚花行乐 如何编写拼写检查器 | 晚花行乐 亚马逊云科技产品免费试用攻略(2) - 云服务器 | 晚花行乐 Pandas 中 axis 参数的理解(附实例) | 晚花行乐 我打算命个名,叫什么什么 Manager | 晚花行乐 上海武康路历史建筑一览 | 晚花行乐 Python 实现简单的数学表达式解析并处理 | 晚花行乐 观看马拉松的感悟 | 晚花行乐 Python 保存 Cookies 到文件并再次读取 | 晚花行乐 如何为 Hugo 静态网站添加评论功能 | 晚花行乐
当selenium遇上docker (二) | 晚花行乐
2018-04-26 · via 晚花行乐

这一篇是上一篇 当selenium遇上docker 的续集,重点介绍 selenium-docker 的使用和调试、设置桌面和安装中文字体。

查看控制台

standalone 的容器正常运行后,用浏览器打开 http://容器地址:4444 ,可以看到如下的界面:

点击红色箭头指向的链接,可以进入 session 管理界面:

{.framed}

这个界面下可以手动添加浏览器实例(session),不过我们主要用来监控自动运行的浏览器。

测试脚本开始运行后,session 管理界面会显示当前 chrome 的个数和对应的 capabilities,如图中红色箭头所指。下图中,一共有4个 chrome 线程同时运行。

{.framed}

内存问题

像上图一样在容器里开启多个浏览器 session 时,容易产生内存不足,使新开的浏览器崩溃,只能开启一个 session。有两种解决办法:

将宿主机的共享内存映射到容器内

\$ docker run **-v /dev/shm:/dev/shm** \[其他参数...\] selenium/standalone-chrome

或者 指定 shm-size 为2GB

\$ docker run ---shm-size=2g \[其他参数...\] selenium/standalone-chrome

远程桌面调试

Windows 环境下可以使用 VNC viewer 连接 selenium debug 容器,而 Mac 则自带了远程桌面工具。

使用方法是:

  • 在 Finder 的图标上点右键,右键菜单选择 Connect to Server…

  • 填入 vnc://容器地址+端口,比如映射在本地5901端口,那么填入

  • 默认密码是 secret

有读者可能会问,这个 secret 密码从哪里来的?

基础镜像 selenium/base 的Dockerfile,其中有设置用户和添加密码的步骤:

#========================================
# Add normal user with passwordless sudo
#========================================
RUN useradd seluser \        # 添加默认用户 seluser
            --shell /bin/bash  \
            --create-home \
    && usermod -a -G sudo seluser \
    && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \
    && echo 'seluser:secret' | chpasswd           # 为 seluser 设置密码
#===================================================
# Run the following commands as non-privileged user
#===================================================
USER seluser            # 切换到 seluser 用户

从上面的 Dockerfile 能看出,在所有的selenium镜像里,都使用了seluser这个默认用户,所以如果你要以这些镜像为基础制作自定义镜像,要记得seluser的身份连上远程桌面后,将看到ubuntu的黑白logo

用你的测试代码打开远程页面后,将可以监控到虚拟浏览器的页面,方便调试。

设置虚拟桌面xvfb

web UI 自动化里,浏览器视口(View Port)是很重要的参数,它能影响到元素的定位、页面的滚动等许多行为,也直接影响了测试用例的成败。

虚拟桌面的大小,将间接的影响和限制浏览器视口的大小,在VNC浏览器里可以直观的看到虚拟桌面的分辨率。那么在selenium-debug镜像里,如何设置虚拟桌面xvfb的分辨率?

我们看 基础镜像 selenium/NodeBase 的Dockerfile,里面这么设置环境变量:

ENV SCREEN_WIDTH 1360\
ENV SCREEN_HEIGHT 1020\
ENV SCREEN_DEPTH 24

所以我们只要启动自己的selenium容器时,设置好环境变量,就可以指定虚拟桌面的分辨率。

如何安装中文字体

在3.11版之前,chrome的镜像里是不包含中文字体的,浏览中文页面时,汉字将显示为一个一个的方框。为了解决这个问题,需要自己根据官方的镜像,定义自己的Dockerfile,下面举个栗子:

FROM selenium/standalone-chrome-debug
LABEL maintainer="LFhacks.com"
RUN sudo apt-get update -y && sudo apt-get -y install ttf-wqy-microhei

上面这个Dockerfile在官方镜像的基础上,安装了文泉驿细黑字体,使用这个镜像,可以正常显示中文。
从3.11版开始,chrome镜像里预装了中文字体,详见 基础镜像 selenium/NodeBase 的Dockerfile 有安装字体库的部分:

1.  Font libraries\
    \#
2.  libfontconfig \~1 MB
3.  libfreetype6 \~1 MB
4.  xfonts-cyrillic \~2 MB
5.  xfonts-scalable \~2 MB
6.  fonts-liberation \~3 MB
7.  fonts-ipafont-gothic \~13 MB
8.  fonts-wqy-zenhei \~17 MB
9.  fonts-tlwg-loma-otf \~300 KB
10. ttf-ubuntu-font-family \~5 MB
11. Ubuntu Font Family, sans-serif typeface hinted for clarity
12. Removed packages:
13. xfonts-100dpi \~6 MB
14. xfonts-75dpi \~6 MB
15. Regarding fonts-liberation see:
16. https://github.com/SeleniumHQ/docker-selenium/issues/383#issuecomment-278367069
17. Layer size: small: 36.28 MB (with ---no-install-recommends)
18. Layer size: small: 36.28 MB\
    RUN apt -qqy update \\\
    && apt -qqy ---no-install-recommends install \\\
    libfontconfig \\\
    libfreetype6 \\\
    xfonts-cyrillic \\\
    xfonts-scalable \\\
    fonts-liberation \\\
    fonts-ipafont-gothic \\\
    fonts-wqy-zenhei \\\
    fonts-tlwg-loma-otf \\\
    ttf-ubuntu-font-family \\\
    && rm -rf /var/lib/apt/lists/\* \\\
    && apt -qyy clean

各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

精彩评论