前言
经历了漫长的各种资料,终于把selenium+testng参数化的问题搞定了!可能网上能找到一些,但是这些都是自己的经历。本文主要介绍了关于docker利用selenium+testng实现web自动化的相关内容,下面话不多说了,来一起看看详细的介绍吧
Windows下selenium+testng的web自动化环境搭建
做过自动化的人,肯定对selenium web环境的搭建非常熟悉了,特别是selenium在java中的使用。
先搭建好安装好JDK,配置好java开发环境(这个如果还是不知怎么操作的话可是要打PP了)。然后从官网下载对应selenium的jar包,加载到项目里;或者是使用maven,修改pom.xml文件直接加载selenium的依赖包即可:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.14.0</version> </dependency>
接着加上对应的浏览器驱动文件,就基本搞定环境了,可以开始自动化测试代码之路了。
当然大家在编写代码的过程中也会用到现在流行的单元测试框架testng。如何在这基础上增加testng环境?其实这也不是什么难事,在testng的官网(https://testng.org/doc/index.html)提供了Eclipse、IEDA等编辑器下如何安装插件,比如Eclipse直接进入Market搜索testng安装即可,使用maven则需要在pom.xml中添加依赖包:
<repositories> <repository> <id>jcenter</id> <name>bintray</name> <url>http://jcenter.bintray.com</url> </repository> </repositories> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.10</version> <scope>test</scope> </dependency>
无脑等待下载安装完成,后续就是写代码了,然后就可以自由的挥洒了。
但是今天要介绍的不是上面这些,这种环境的搭建非常简单,大多数人其实都会,坑也不多,只是个代码环境而已。
我们这次要处理的麻烦事是什么呢?在现在日益发达的docker模式下,上述的编译环境没法在linux系统上跑了,没了代码编辑器、没了界面、也没了浏览器,那应该如何操作呢?让我们来看一看。
Docker的安装与使用
同样的,还是需要java+selenium+testng,只不过环境从windows变成了linux。
关于docker的使用这里稍稍给大家介绍一下安装、启动过程:
直接使用yum install docker
命令安装;
service docker start启
动docker服务;
然后docker pull centos
搞定centos版本下最基本的docker镜像;
通过docker images
命令可以列出当前所有镜像;
查看到linux的镜像后,使用docker run -it -d
镜像名称,让linux的容器跑起来(注意-it -d
的参数,如果没有容器一闪而过就挂起了);
进入容器可先通过docker ps查看当前所有运行的容器,如果查不到,说明容器并没有启动,或者已经关闭了,docker ps
会列出容器的id;
使用docker attach
容器id即可登录到容器中的linux了。
Docker下java环境搭建
容器里的linux其实和普通的linux操作是一样的了。
首先是安装jdk:
下载 jdk-8u181-linux-x64.tar.gz 包;
tar -xzvf jdk-8u181-linux-x64.tar.gz
解压,得到jdk1.8.0_181 目录(假设存放为/root/java/ 目录);
配置java的环境变量:
编辑环境变量文件:vi /etc/profile
加入内容:
export JAVA_HOME=/root/java/jdk1.8.0_181 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
刷新环境变量配置:
source /etc/profile
确认java版本是否生效:
java -version
到这里java环境算是解决了,也没什么特别的难度,一步步来即可。
Docker下testng环境配置
接下来就是testng了,因为环境类似java而且也和环境变量有关系,所以优先解决:
下载 testng-6.14.3.jar 包;
tar -xzvf testng-6.14.3.jar
解压得到testng目录(假设放在 /root/java/testng/ 目录下) ;
继续编辑环境变量文件:
vi /etc/profile
加入内容:
export TESTNG_HOME=/root/java/testng export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar
刷新环境变量配置:
source /etc/profile
注意这里的testng环境变量,其中的 CLASSPATH 是在java环境的基础上追加的,如果大家是在windows上配置,分隔符要换成 ; 且环境变量的互相调用形式不同,这是有一些区别的。
好了,可能有人会觉得,这不是很简单吗?
但是,如果这时候继续去执行的话,会发现开始报错了,也就是深坑来了,这是因为脱离了整个开发环境。
先提一下testng的执行步骤,假设自己写个test.java,记住要最简单的,别参合其他jar包之类的,其中包含包名为 simple ,类名为 test:
javac test.java java org.testng.TestNG -testclass simple.test
看似非常简单,但是执行起来,到处都是错误,执行javac test.java,常见错误为:
java.lang.NoClassDefFoundError: com/beust/jcommander/
这是缺少因为缺少编译时用到的jar包,需要下载 jcommander-1.72.jar,我们将它放置在testng的jar包一起(假设放置在/root/java/testng/目录):
环境变量的CLASSPATH需要追加 :
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar:$TESTNG_HOME/jcommander-1.72.jar
继续刷新环境配置:
source /etc/profile
这之后一般就可以顺利编译,出现 test.class 文件了。
如果出现其他错误,比如与testng相关的包不存在等等,请检查环境变量配置是否正确。
最后就是运行的环节了,也是大家会遇到问题点最多的点了。
先提一下结构,比如上面 simple.test 的类,那么需要建立文件夹 simple 里面存放test.java。
CLASSPATH的环境变量里,需要有testng代码文件和包的顶级目录追加添加,假设为
/root/java/testng/ /root/java/testng/simple/test.java
有了这样的结构前提,就可以通过命令执行了:
java org.testng.TestNG -testclass simple.test
出现结果,意味着运行成功了:
Total tests run: 1, Failures: 0, Skips: 0
如果你的代码中有测试用例@Test,但run出现0的话,说明还是失败的,只是没有给明确的报错而已。
当然到这里还没意味着结束。
因为你可能还会遇到缺乏各种依赖的jar包的问题:
可以通过参数将这些jar包都引入
/root/java/testng/ /root/java/testng/simple/test.java
远程调用windows下浏览器
以为这就搞定环境,万事大吉了么?再补一刀,浏览器呢?没有浏览器得问题应该怎么解决呢?
请使用selenium自带的server部署到windows机器上。
这个问题的解决反而是比较简单的:
下载 selenium-server-standalone-3.14.0.jar 包;
放在指定目录(比如放在C盘根目录);
cd到该目录下:cd C:\
执行命令打开selenium remote服务:
java -jar selenium-server-standalone-3.14.0.jar -port 6666
接下来有人会问怎么指定浏览器?
只需要在java代码里,使用下面语句就可以对刚才在windows启动的服务进行调用了:
WebDriver driver = new RemoteWebDriver("http://ip:6666/wd/hub/", DesiredCapabilities.chrome());
另外注意服务器上还是需要浏览器的driver驱动文件,无脑一点就和jar包放一起就完事了,爱折腾的可以自己研究一把,区别只是启动服务时需要带上一些参数。
整个docker下使用selenium+java远程调用widows下Chrome浏览器,实现web自动化的环境搭建完毕。
后续关于docker下面使用selenium+testng实现web自动化代码的编写,我们将在后续进行更新,等待我们下一次更新哟~
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]