Docker环境下跑WebUI脚本文件上传问题

问题背景:在Linux服务器Docker环境下跑WebUI脚本
在Linux服务器Docker环境下跑WebUI脚本,发现在Web页面测试附件上传问题总是找不到文件,同样的脚本在本地Windows环境下跑脚本是可以成功的,问题找不到思路和方案,后来一步步排查才知道问题的根源卡在哪里了,请看下图

脚本报错:
在这里插入图片描述
理清了下思路,在宿主机上跑UI自动化脚本是浏览器容器在跑,所以在跑附件上传时候是在容器里面来找路径,而不是宿主机里面,所以问题就卡在这里:
在这里插入图片描述
解决思路:
方案一:Jenkins持续集成创建job拉取代码后,将想要做文件上传的目录直接copy到指定的浏览器docker容器里面的某个路径下,然后将代码里面文件上传的upload()方法的路径指明docker的路径即可。
方案二:每次构建的时候,我写个shell脚本,然后来创建容器,做路径映射,然后每次保证用你这个新启动的浏览器

我们以方案一为例子:

1.用存在的镜像madehao/selenium-node-chrome:latest来创建容器,并命名容器的NAMES为chrome74_jiawenheng

查看镜像:docker images
在这里插入图片描述
查看seleniumHub
在这里插入图片描述
创建容器,并将容器新命名为chrome74_jiawenheng,为了方便和别人区分
docker run -d -p 5946:5900 --name chrome74_jiawenheng --link selehub_new:hub --shm-size=512m madehao/selenium-node-chrome:latest

查看运行的容器:docker ps -a
在这里插入图片描述
2.进入到chrome74_jiawenheng容器里面,创建指定的目录
docker exec -it 容器ID /bin/bash
创建一个文件夹
cd opt/
sudo mkdir autotest
pwd
/opt/autotest
在这里插入图片描述
3.进入到jinkins里面,在Build构建的时候写shell命令,即将宿主机download文件目录copy到指定的chrome74_jiawenheng容器/opt/autotest文件下,shell命令如下:
#!/bin/bash
docker cp src/test/resources/download/ chrome74_jiawenheng:/opt/autotest
在这里插入图片描述
4.修改java涉及路径的代码
如果是linux要定义docker容器的路径即:
String filePath = null;
filePath = “/opt/autotest/download/”+ fileName;
然后selenium脚本用这个filePath路径
在这里插入图片描述

5.修改testng.xml版本号

这个版本号是指的selehub_new:hub是唯一的,因为第1步骤里面在selehub_new:hub挂载这个命名为chrome74_jiawenheng浏览器的版本号就是74.0.3729.108,要写shell脚本向这个NAMES命名为chrome74_jiawenheng的Chrome容器里面copy要上传附件的路径;
在这里插入图片描述
具体版本号通过http://remoteIP:4444/grid/console来查看(remoteIP指的是宿主机IP)
在这里插入图片描述

6.然后通过IDEA提交代码,合并代码,触发Jenkins的Job后查看日志的报告;
job状态运行完毕
在这里插入图片描述
构建日志,查看文件上传OK
在这里插入图片描述
查看测试报告,成功
在这里插入图片描述
进入到docker容器NAMES为chrome74_jiawenheng里面查看文件copy过来了没有
至此结束!
在这里插入图片描述

发布了4 篇原创文章 · 获赞 3 · 访问量 276

猜你喜欢

转载自blog.csdn.net/go2012heng/article/details/104059094
今日推荐