1. 安装无头浏览器
1.1 CentOS 安装 Phantomjs
- 下载并解压
访问 Phantomjs ,找到 Download phantomjs-2.1.1-linux-x86_64.tar.bz2
的下载链接,并拷贝。
在 CentOS 执行命令:
|
|
- 添加到环境变量
|
|
在行尾新增,如下内容
|
|
使环境变量立即生效
|
|
查看 Phantomjs 版本号
|
|
安装完之后,发现 Phantomjs 官网有这么一句提示:Important: PhantomJS development is suspended until further notice
。意思是 PhantomJS 暂停开发了,心碎。在 Robot Framework 中使用 PhantomJS 时,Console 也会输出类似提示。
不过没关系,PhantomJS 只是无头浏览器的一种, Chrome 浏览器从 59 的版本开始新增加了一种模式 - 无头模式 headless。也就是说,可以用 Chrome headless 替代 PhantomJS 。
1.2 CentOS 安装 Chrome
- 配置安装源
|
|
新增如下内容:
|
|
- 开始安装:
|
|
- 查看 Chrome 版本
|
|
- 安装 chromedriver
chromedriver 的版本需要与 Chrome 版本相匹配。在 chromedriver 页面,找到匹配的驱动下载链接。
|
|
tips: 如果没有将 chromedriver 文件放在 /usr/bin/ 目录下,执行测试用例时,会报错 WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
。
2. Jenkins 配置
2.1 安装 Jenkins
- 首先需要安装 JDK 环境,然后安装 Jenkins。
|
|
- 新增 runner 分组和 runner 用户
|
|
- 修改配置文件
/etc/sysconfig/jenkins
|
|
- 启动 Jenkins
访问 http://127.0.0.1:8080/ 页面:
|
|
根据页面提示,cat /home/runner/secrets/initialAdminPassword
找到密码。然后,建议直接安装 Jenkins 推荐的插件,点击 Install suggested plugins
。
2.1 安装 robotframework 插件
在 Manage Jenkins > Plugin Manager 页面,选择 Avaliable 标签。搜索 robot
,安装插件 Robot Framework plugin
。
最后别忘了重启 Jenkins ,以使插件生效。
3. 流水线配置
- Jenkins 新建一个名为 robot-framework-demo 的 Freetyle project
- 代码管理选择 - Git 类型,输入:
https://github.com/shaowenchen/docker-robotframework.git
。在仓库中,写了一个简单的 Robot Framework 测试用例,实现对网站首页测试截图的功能。
- 在 Build 中,Add build step 选择 Execute Shell,输入:
/usr/bin/pybot .
。
- 在 Post-build Actions 中,Add post buld step 选择 Publish Robot Framework test results 。点击 Advanced 展开更多选项,在 Others files to copy 中,输入
*.png
。这是为了在 report.html 或者 log.html 中,看到截图。否则,测试用例截图,并不会被归档到指定位置。
- 安装 robot framework plugin 之后,在每次构建的详情中,就可以直接看到测试结果。
- 查看测试报告 report
- 查看测试日志 log
4. 问题与解决
- Opening Robot Framework report/log failed
在 Manage Jenkins > Script Console 输入:
|
|
点击运行。
需要重新执行一次构建, 就可以查看 report.html 和 log.html。
- WebDriverException: Message: unknown error: DevToolsActivePort file doesn’t exist
在 Chrome 参数中新增 --no-sandbox --headless --disable-gpu
。如果不使用 Robot Framework ,在代码中:
|
|
- Selenium2Library . Capture Page Screenshot 截屏乱码
CentOS 安装中文字体
|
|