maven+selenium+jenkins+git实现自动化持续集成

以前项目中编写的selenium自动化测试代码没有使用Jenkins持续集成,在项目中造成各种不便,因此决定花点时间学习使用Jenkins以解决实际中的种种不便,途中踩了很多坑,于是把过程和踩过的坑一一记录下来。

一 代码部分

1.在idea中新建maven项目autoTest

2.在pom.xml中添加依赖
①selenium依赖(我使用的是2.44版本,selenium版本、driver版本、浏览器版本这三个版本需要对应,对应关系网上有很多,自行搜索)

<dependency>

    <groupId>org.seleniumhq.selenium</groupId>

    <artifactId>selenium-java    </artifactId>

    <version>2.44.0 </version>

</dependency>

②testng依赖

<dependency>

    <groupId>org.testng </groupId>

    <artifactId>testng </artifactId>

    <version>6.14.3   </version>

</dependency>

③maven打包插件
\color{Red}{注意:}suiteXmlFile是需要运行的testsuite的xml文件所在位置,一定记得修改

<build>
        <defaultGoal>compile</defaultGoal>
        <sourceDirectory>src</sourceDirectory>
        <resources>
            <resource>
                <directory>src</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>src/test/logintest.xml</suiteXmlFile>
                        <!--suiteXmlFile是需要执行的testsuite的xml文件所在位置-->
                    </suiteXmlFiles>
                </configuration>
            </plugin>
        </plugins>
    </build>

④新建testsuite的xml文件,一定记得在pom.xml中修改 <suiteXmlFile>路径
\color{Red}{注意:}<class name=xxx/>修改为测试类的相对路径(copy reference)

<suite name="Suite" parallel="false">
      <test name="Test">
        <classes>
            <class name="TestLogin"/>
        </classes>
     </test>
</suite>

3.在/src/test/java下新建测试类TestLogin
\color{Red}{注意:}①测试类一定要放在/src/test/java下,否则maven打包运行时找不到测试类 ②测试类需以Test开头,否则maven打包运行时找不到测试类

4.将浏览器设置为无界面模式

//设置浏览器驱动的路径
System.setProperty("webdriver.chrome.driver","/home/jenkins/chromedriver/chromedriver");
ChromeOptions options=new ChromeOptions();
//设置无界面模式
options.addArguments("--headless");
//为了运行顺畅,添加以下浏览器配置
options.addArguments("--disable-gpu");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("blink-settings=imagesEnabled=false");
options.addArguments("--disable-setuid-sandbox");
driver=new ChromeDriver(options);

5.代码编写完成后,使用maven打包,测试能否正确打包,打包时会运行测试用例

6.完成后将代码提交到git

二 linux配置

1.安装Chrome浏览器
①下载Chrome for Linux(https://www.chromedownloads.net/chrome64linux/),我安装的版本是Google Chrome 71.0.3578.98,先安装的版本是70,但是与Chromedriver不兼容
②解压下载的压缩文件
③上传Linux,运行命令安装:rpm -ivh 安装包名称
\color{Red}{注意:}执行安装命令后,可能会报错,因为Linux缺少一些插件,使用yum install 插件名称安装插件,所有插件安装完成后谷歌浏览器就能顺利安装了
④安装成功后查看Chrome的版本,执行命令:google-chrome --version

2.下载Chromedriver
①.下载Chromedriver for Linux(https://npm.taobao.org/mirrors/chromedriver?spm=a2c6h.14029880.0.0.735975d7P8udIF),我安装的版本是Chromedriver2.44。再次提醒selenium版本、Chrome版本、Chromedriver版本三者一定要对应
②将测试代码中的Chromedriver的路径替换成Linux上Chromedriver的路径

三 Jenkins配置

1.安装Jenkins,这里不详细介绍了,网上很多教程

2.打开Jenkins网页

3.打开Jenkins的全局配置页面,配置maven,maven_home是Jenkins服务器上的maven路径


image.png

4.新增Jenkins任务


image.png

5.配置Jenkins任务
①进入Jenkins任务,点击配置


image.png

②源码管理选择git,输入git仓库地址、添加并选择git用户、输入分支


image.png

③选择构建步骤
image.png

④选择maven版本,输入maven命令
image.png

⑤保存配置

6.开始构建


image.png

7.查看控制台输出,如果成功,日志和下图类似


image.png

四 总结

以上就是我的Jenkins持续集成的过程,踩过的坑和注意事项也都重点标记出来了,大家也要注意哦!
补充:我用xshell连接的服务器,在Jenkins构建时,xshell老是会弹出弹窗


image.png

解决办法:1.把xshell远程连接关掉 2.在创建连接时,关闭X11转发选项

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351