最近入职一家新公司,主要负责做自动化测试,包括WEB Android和iOS
目前的工作能力主要集中在WEB这一块,使用的是通用的Selenium和Testng组合;
以上为背景。
我在以前的项目中没有使用过gradle,所以这个构建工具对我来说是全新的,临时在
网上看了一些基本的,通用的配置,主要是插件,mvn仓库,依赖等,说实话,没什么高深的理论;
然后就是在自己的电脑上安装gradle,配置,并在eclipse中安装gradle插件,完成以上步骤后就可以直接在
eclipse中创建一个gradle项目,首先需要熟悉一下gradle项目的解构,和以前的ant或者maven都有所不同,
不过简单熟悉一下后,会发现没什么特别的;在这个项目中最重要的就是build.gradle这个文件,前面提到的
对于插件,mvn仓库,依赖的配置全部是在这个文件中,后期的管理测试脚本的运行等任务也是在这个文件中;
上面大致的介绍了一下gradle项目的组建,其实这些信息网上到处都是,没什么价值,下面主要记录一下在这个
工程中遇到的问题;
1,编码问题
使用gradle build指令时出现 错误:编码 GBK 的不可映射字符
我在CSDN中查到了解决方法如下:
tasks.withType(JavaCompile) {options.encoding = "UTF-8"}
在这里吐槽一下自己,我是直接将自己的工程集成到jenkins了,在jenkins中build的时候Console Output中
输出上上述错误,我当时以为是jenkins的问题,一直在jenkins上打转,浪费了不少时间,我犯的这个错误说明自己的
思维不缜密,比较武断的做出了错误的判断;
2,第二个问题在于我对于selenium的理解不深入,在以前的项目中,我进入自动化测试小组的时候,框架已经搭建完成,
我主要是使用框架,并没有从零开始搭建一个测试框架,导致我对Selenium的组成,项目的各种依赖问题理解很浅;
这一次从零开始,发现selenium是依赖了很多的jar包的,在build.gradle中配置好maven 仓库以及依赖的包以后,如下:
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
// mavenCentral()
// maven { url 'https://mvnrepository.com/artifact/' }
}
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '2.47.2'
compile group: 'org.seleniumhq.selenium', name: 'selenium-server', version: '2.47.2'
testCompile group: 'org.testng', name: 'testng', version: '6.11'
configurations.all {
transitive = true
}
以上配置中有三个注意点:
1 ,注意maven仓库的地址的配置,这几天因为19大的原因,很多网站无法正常访问了;
2,注意selenium版本的选择问题,尤其要和测试中使用的firefox的版本一起考虑,不同的selenium版本对不同的firefox版本进行支持
selenium和firefox的兼容性问题也是一个自动化测试中需要小心解决的一个问题;
3,第三项配置是表示依赖的传递性,举个例子,selenium依赖selenium-support,而后者又依赖其他的jar包,将transitive = true添加到文件中会指示gradle
自动的去下载任何被依赖的jar包;
到目前为止,我用selenium最新版3.6,testng 6.11已经成功搭建了框架,目前脚本已经能够成功运行在chrome浏览器上;
只是还存在一个问题:我希望自己的脚本也能够完全运行在chrome,firefox和IE上,只是在配置
使用geckodriver.exe驱动firefox时总是失败,geckodriver.exe能够正常启动firefox,但是启动以后就没有任何其他的动作了,原因目前尚未查明