(一)安装xmlrunner

Python+Selenium笔记(拾八):持续集成jenkins,seleniumjenkins

(一)安装xmlrunner

选取Jenkins实行测试时,测试代码中会用到那个模块。

 pip install xmlrunner

(二)安装jenkins

(1)   下载jekins

下载适合自个儿的,作者是下载短时间牢固版的。

 图片 1

(二)   解压后运转jenkins.msi这一个文件,然后径直下一步正是了。

 图片 2

(3)   登录

(肆)   依照提示输入密码后,下一步。

图片 3

(陆)   这里首先个应该是默许安装jenkins
community的常用插件,第1个应该是挑选须求安装的插件。不了然的时候选第三个就是了。

 图片 4

(柒)  
插件安装成功后如下图所示。(倘若那步有1对插件安装失利以来,就再度下载,实在安装不了就重启Jenkins服务(Windows的服务里重启),然后再度登录后跳过那步,安装退步的插件今后再在Jenkins的插件管理中去安装)

 图片 5

(捌)   安装实现。

图片 6(三)新建任务

(一)      首页点击【新建】。

 图片 7

 

(二)      填写有关音讯后,点击【鲜明】。

(三)     
构建触发器设置自动营造的时光。下边包车型大巴是职业日每晚10点自动实行,那样第一天中午上班就会看到测试结果了。

此地有三个参数:能够点击前面?查看表达文书档案,*意味着私自时间

第一个:分钟(0-59)

第二个:小时(0-23)

第三个:日(1-31)

第四个:月份(1-12)

第陆个:星期几(0-七,0和七都代表星期一)

 图片 8

(四)      创设部分扩充营造步骤,这里选用Windows批管理命令。

copy F:\Python\firstselenium\smoketest\*.py

python smoketests.py

 图片 9

(5)      构建后操作,增添操作步骤,选拔Publish JUnit test result
report,然后在测试报告字段填写
测试报告/*.xml。(测试报告是测试套件中布局的output参数的值,看下边的smoketests.py的代码就知晓了)那样Jenkins每一次运维测试的时候都会从那个文件夹读取测试结果。

 图片 10

(陆)      配置完结后点击【保存】。

(7)      点击下图的【立时营造】,深蓝就表示成功了。

 图片 11

(八)     
点击上航海用教室的前卫测试结果能够查看最新的测试结果。(也能够点击具体Build
History上边包车型地铁时间,查看具体哪一遍创设的测试结果,点击深灰的球形Logo的话,能够查阅调控台出口)

图片 12

图片 13

上面包车型地铁代码部分,主要的便是测试套件中的那句,其余的温馨无论写一个或几个测试用例就行了

xmlrunner.XMLTestRunner(verbosity=2,output='测试报告').run(smoke_tests)

(四)smoketests.py

 1 import unittest
 2 from searchtest import SearchTest
 3 from homepagetest import HomePageTest
 4 from xmlrunner import xmlrunner
 5 #获取SearchTest类 和 HomePageTest类中的所有测试方法
 6 search_test = unittest.TestLoader().loadTestsFromTestCase(SearchTest)
 7 home_page_test = unittest.TestLoader().loadTestsFromTestCase(HomePageTest)
 8 #创建一个包括SearchTest和HomePageTest的测试套件
 9 smoke_tests = unittest.TestSuite([home_page_test,search_test])
10 #运行测试套件
11 # unittest.TextTestRunner(verbosity=2).run(smoke_tests)
12 xmlrunner.XMLTestRunner(verbosity=2,output='测试报告').run(smoke_tests)

(五)searchtest.py

 1 import  sys
 2 import unittest
 3 from selenium import webdriver
 4 from selenium.webdriver.common.action_chains import ActionChains
 5 from selenium.webdriver.support.ui import WebDriverWait
 6 class SearchTest(unittest.TestCase):
 7     @classmethod
 8     def setUpClass(cls):
 9         cls.driver = webdriver.Chrome()
10         # cls.driver.implicitly_wait(20)
11         cls.driver.maximize_window()
12         cls.driver.get("https://www.cnblogs.com/")
13 
14     def test_search_by_category(self):
15         category_list = ['Java', 'C++', 'PHP', 'Delphi', 'Python', 'Ruby',\
16                          'C语言', 'Erlang', 'Go', 'Swift', 'Scala', 'R语言', 'Verilog', '其它语言']
17         #定位首页网站分类中的编程语言
18         search_class = self.driver.find_element_by_xpath('//li/a[@href="/cate/2/"]')
19         #光标悬停在“编程语言”上
20         ActionChains(self.driver).move_to_element(search_class).perform()
21         WebDriverWait(self.driver, 20).until(lambda l: len(l.find_elements_by_xpath( \
22             '//div[@id="cate_content_block_2"]/div[@class="cate_content_block"]/ul/li')) == 14)
23         # 以列表形式返回编程语言下的所有小类
24         search_small = self.driver.find_elements_by_xpath(\
25             '//div[@id="cate_content_block_2"]/div[@class="cate_content_block"]/ul/li')
26         small_cate = []
27         for s in search_small:
28             #去掉小类最后面的(0),并添加到列表small_cate中
29             small = str(s.text).split('(')
30             small_cate.append(small[0])
31         #检查表达式是否为true(此处检查编程语言下的小类是否与预期结果一致)
32         self.assertTrue(small_cate == category_list)
33         self.assertEqual(small_cate,category_list)
34 
35     def test_search_by_look(self):
36         seach_class = self.driver.find_element_by_xpath('//li/a[@href="/cate/2/"]')
37         #定位编程语言下的小类Python
38         seach_small = self.driver.find_element_by_xpath('//li/a[@href="/cate/python/"]')
39         ActionChains(self.driver).move_to_element(seach_class).click(seach_small).perform()
40         #检查打开的网页标题是不是 Python - 网站分类 - 博客园
41         self.assertEqual(self.driver.title,"Python - 网站分类 - 博客园" )
42 
43     @classmethod
44     def tearDownClass(cls):
45         cls.driver.quit()
46 #加上下面2句,可以通过命令行运行测试,不加的话不影响通过IDE运行测试
47 if __name__ == '__main__':51     #加verbosity=2参数,在命令行中显示具体的测试方法
52     unittest.main(verbosity=2)

(六)homepagetest.py

 1 import sys
 2 import  unittest
 3 from selenium import  webdriver
 4 from selenium.common.exceptions import NoSuchElementException
 5 from selenium.webdriver.common.by import By
 6 class HomePageTest(unittest.TestCase):
 7     @classmethod
 8     def setUpClass(cls):
 9         cls.driver = webdriver.Chrome()
10         cls.driver.implicitly_wait(10)
11         cls.driver.maximize_window()
12         cls.driver.get("https://www.cnblogs.com/")
13 
14     def test_search_field(self):
15         #检查博客园首页有没有搜索框,is_element_present()是自定义的方法
16         self.assertTrue(self.is_element_present(By.ID,"zzk_q"))
17     def test_search_btn(self):
18         # 检查博客园首页有没有找找看按钮
19         self.assertTrue(self.is_element_present(By.CLASS_NAME,"search_btn"))
20 
21     # 检查博客园首页菜单栏信息是否与预期一致
22     def test_menu(self):
23         menu_data =['园子https://home.cnblogs.com/', '新闻https://news.cnblogs.com/',
24                     '博问https://q.cnblogs.com/', '闪存https://ing.cnblogs.com/',
25                     '小组https://group.cnblogs.com/', '收藏https://wz.cnblogs.com/',
26                     '招聘https://job.cnblogs.com/', '班级https://edu.cnblogs.com/',
27                     '找找看http://zzk.cnblogs.com/']
28         #以列表形式返回博客园首页菜单栏信息
29         self.check_menu = self.driver.find_elements_by_xpath('//div[@id="nav_menu"]/a')
30         the_menu = []
31         for c in self.check_menu:
32             #将博客园首页的菜单名称和URL添加到列表the_menu
33             the_menu.append(c.text + c.get_attribute('href'))
34         #检查2个列表是否一致(检查博客园首页的菜单名称及URL是否和预期一致)
35         self.assertListEqual(the_menu,menu_data)
36 
37     # 找到元素,返回True,否则返回False
38     def is_element_present(self,how,what):
39         try:
40             self.driver.find_element(by=how,value = what)
41         except NoSuchElementException as e:
42             return False
43         return True
44 
45     @classmethod
46     def tearDownClass(cls):
47         cls.driver.quit()
48 
49 # 加上下面2句,可以通过命令行运行测试,不加的话不影响通过IDE运行测试
50 if __name__ == '__main__':54     # 加verbosity=2参数,在命令行中显示具体的测试方法
55     unittest.main(verbosity=2)

(一) 安装xmlrunner 使用Jenkins推行测试时,测试代码中会用到那么些模块。
pip insta…

0推荐小说和网址

参照小说
使用Jenkins配置Git+Maven的自动化营造
jenkins
git插件安装
Jenkins+Github持续集成
手动下载Jenkins插件网站

使用Jenkins实践测试时,测试代码中会用到那一个模块。

1不辍集成的效应、进程和优势

  • 连发集成就是高效、高频率地活动营造项目标具备源码,并为项目成员提供丰盛的报告音讯。
    • 快速:集成速度要尽恐怕的块,开辟人士不愿意团结提交的代码提交半天后才得到反映。
    • 高频率:频率越高越好,比如每隔3个时辰,那样难题就足以赶紧地反映出来。
    • 自动*:持续集成应该自行触发并推行的,不应有有手工业到场。
    • 构建:包罗编写翻译、测试、审查、打包、安插等专业。
    • 具有源码:全数团队成员提交到代码Curry的新颖的源代码。
    • 反馈:持续集成应该通过各样飞速的主意告知团队最新的集成状态,当集成失利,反馈报告应该尽只怕地反映战败的切切实实细节。

 pip install xmlrunner

一.一标准应用场景

开拓人士对代码做了有的改造,在本地运维构建并承认准确之后,将转移提交到代码库(git、svn等)。具备高配置硬件的不断集成服务器每隔二十七分钟查询代码库一回,发现更新之后,签出全数最新的源代码,然后调用自动化创设工具(maven、ant等)营造项目,该进程包含编写翻译、测试、审查、打包和安顿等。可是不幸的是,别的一名开辟职员在这暂小时段也付出了代码更换,两处改变导致了好几测试的停业,持续集成服务器基于那个败北的测试创建贰个报告,并机关发送给相关开垦人士。开荒人士收到告知后,立时初始侦查选拔,并神速修复。

不止集成流程

(二)安装jenkins

2Jenkins简介

Jenkins是一款持续集成工具,它的前身是赫德森。使用jenkins还无法做到持续集成职业,还亟需版本调节工具(git、svn等)和花色营造筑工程具(maven、ant等)同盟才足以产生。

(1)   下载jekins

3.准备

  • 第一须要精通的是,Jenkins是帮大家将代码进行联合的编译打包、还是能够放置tomcat容器中进行发表。
  • 意思是大家经过布署,将从前:编写翻译、打包、上传、陈设到汤姆cat中的进程交由Jenkins,Jenkins通过给定的代码地址U瑞虎L,将代码拉取到其“宿主服务器”(这是自己个人的叫做,在底下会用到,就是Jenkins的装置地方),进行编写翻译、打包和透露到容器中。
  • 于是大家得以小心到的是,在Jenkins的宿主服务器中务须要有能够开始展览:代码clone(Git)、代码编写翻译(Maven)、代码运转(汤姆cat)的基本条件,别的小说上来正是安装jenkins,忽略了部分为主的安顿。
  • 上边小编写的案例是1个平常的java项目,涉及到的软件有git、maven、nexus、tomcat、jekins。所以要求确定保障已经设置。至于git的设置下面小说有介绍,关于maven,nexus的安装笔者后面小说有介绍。

3.1安装jenkins

  • jenkins是一个war文件,下载jenkins,小编下载的是二.1玖.肆版本

  • 运营前先布署jenkins的办事目录,jenkins的劳作目录会趁着职务的变多而占领磁盘空间变大,所以以前能够陈设一下事业目录。请看maven—1贰Jenkins专门的学问目录

  • 下载后可以通过 java -jar jenkins.war
    –httpPort=8080直接运营(其置于了jetty服务器),或许直接放到tomcat的webapps目录下了,再开发银行tomcat。上面以tomcat方式运转。然后访问http://localhost:8080/jenkins
    就进去jenkins管理分界面了。

  • 率先次跻身网址,jenkins会生成jenkins的办事目录,然后令你输入管理员密码进入,该密码你依照提醒音讯去干活目录中就能够找到。密码会存在jenkins的专门的学业目录中的secrets\initialAdminPass文件中。E:\soft\jenkins\jenkins_work\secrets\initialAdminPassword

  • 密码输入后跻身安装插件界面,点击推荐安装,即使此时出现如下分界面,则尝试重启jenkins,重启tomcat,一般意况的重启方法是在浏览器输入http://localhost:8080/restart,不过那种境况依然重启tomcat

    Paste_Image.png

  • 一经jenkins一贯在运转状态有不小希望内部存款和储蓄器溢出了,为您的tomcat的虚拟机设置大学一年级些周转内部存款和储蓄器。

Paste_Image.png

下载适合自个儿的,笔者是下载长时间稳固版的。

四配置插件

  • 进入jenkins会让您下载一些必需的插件和引进的插件,供给安装某个插件才足以选用一些工具,比方jenkins暗中同意不帮助git,所以要下载git相关插件才能够让jenkins协助。而互联网原因有相当的大几率会下载失利,所以还要求手动下载。

jenkins第一回下载插件

有个别插件安装战败

  • 插件安装退步要是未有进来主分界面实践http://localhost:8080/restart
    重启后。进入后就是手动下载供给的插件了,包罗下载失利的插件都急需手动下载,在布置上来。
  • 有些插件的安装须求注重其余插件,所以一旦某四个插件安装退步会潜移默化到任何插件的设置。
  • 对此插件的纯粹选拔,作者还不是太精晓,只是领悟供给git、github、maven,在下的时候因为插件间重视原因也多下了其余的。
  • 插件的参考来自于地点两篇小说。

 图片 1

4.1分明须要下载的插件

  • 大致明显要下插件自己的那一个jenkins版本内置了maven插件,所以首要下载git、github和jenkins推荐的必需插件,最后我因为还不是太懂好像也下了有些用不到的插件,我一伊始也不曾下那么多,可是在建职分时发现有点配置未有,所以又去[插件管理]中寻找有关插件。

(二)   解压后运转jenkins.msi那些文件,然后直接下一步就是了。

4.二联网下载的插件

  • 第一次登录http://localhost:8080/jenkins
    网址会让您下载相关插件,作者选了上边包车型客车多少个插件。然后会跻身下载等待,最终会给你唤醒下载的成功景象,有的插件下载败北有的成功了。

 图片 2

四.三手动下载插件

在Jenkins一齐来会让您选用设置插件,但是由于互连网原因会下载失利,有的插件安装战败,所以需求手动下载在上传上传。

(3)   http://localhost:8080 登录

四.3.一查找要求下载的插件

一些插件安装战败,进入管理分界面就能够出现如下错误:

插件安装战败

案例:上边错误有七个(那是自己消除了有的后还余下的),先消除pipeline:Stage
View plugin
v2.肆插件安装失利。依照提醒发掘失败原因是内需先安装pipeline-rest-api
v二.四插件。
基于错误提示去插件网站追寻(Ctr+f)必要下载的pipeline-rest-api
v2.肆插件。

(四)   依据提醒输入密码后,下一步。

四.三.2下载需求的插件

寻找插件

挑选要下载的本子

下载的是叁个1.hpi结尾的文书。

图片 3

四.3.叁上传插件

系统管理–管理插件–高档Tab->上传插件

  • 上传插件
Paste\_Image.png
  • 查阅安装状态
安装成功

安装失利情状

(六)   这里首先个应该是暗中同意安装jenkins
community的常用插件,第三个应该是选项需求设置的插件。不熟练的时候选第一个正是了。

4.4重启jekins

有的插件安装达成要求重启才能奏效(会有提醒),重启正是重启tomcat就足以。重启完后已安装的插件就不相会世谬误提醒了。

并未有不当插件提醒了

 图片 4

5布署jenkins全局工具

Paste_Image.png

(七)  
插件安装成功后如下图所示。(假诺那步有一对插件安装退步以来,就再次下载,实在安装不了就重启Jenkins服务(Windows的劳动里重启),然后再度登入后跳过那步,安装战败的插件以往再在Jenkins的插件管理中去安装)

陆新建1个任务

 图片 5

陆.壹.1职务须求

  • 经过持续集成不断的把三个java项目标新颖构件自动公布到nexus仓库中,个中会透过举报机制重回集成的场合和错误报告。(不过反馈好像没起功效,有非常的大或然是邮箱配错了,揣测)
  • 源码处理:github,项目营造工具maven,项面生成构件揭橥到nexus上。
  • 在jenkins中新建贰个随意风格项目,自由风格项目不仅帮助maven项目还协助别的品种项目。
Paste\_Image.png

(捌)   安装到位。

陆.壹.贰职责布署(写的不是太详细前面在补充)

图片 6(三)新建职务

陆.1.2.一定义解释

  • 任务供给配置旧塑造遗弃战略、源码处理、营造触发器、营造、创设后操作。
  • 甩掉计谋:
    下图是hudson的舍弃战术一样适用于jenkins,因为hudson是jenkins前身。
丢弃策略
  • 源码管理:
    品种源码管理本人选择的是git源码管理工科具,所以笔者早已在github上创设了贰个cidemo库房。配置它的时候除了配置项目地址,还要配置git在本机的求证音讯,该处参考了地方两篇文章。
  • 塑造触发器:

触发器攻略

Paste_Image.png

  • 构建
    让jenkins选择用什么命令创设项目,在前边大家配备maven所以会挑选[invoke
    top-level Maven targets]进展陈设。
Paste\_Image.png
  • 创设后操作
    该手续配置营造完后的片段义务,有怎样能够在此地配置呢?任务测试报告,邮件举报等。
    其中邮件举报最首要,下壹篇文书介绍maven—1一配置jenkins的邮件举报。

(一)      首页点击【新建】。

6.1.2.2建一个helloword任务

PollSCM表达式

Git项中Credentials点击add后的的安排

触发器和构建境况

  • 上面触发条件的Poll
    SCM表达有误,应该是原则性时间去轮询源码库,发现有更新的时候才构建本项目

    配置生成测试报告

 图片 7

陆.1.叁jenkins中的已建好的任务

首页展现jenkins中具备义务

  • 在jenkins首页展现全体职责。
    讲述任务有多少个天性,在那之中:
  • 首先列状态(S):职分状态,使用颜色代表职分当前情况。
    • 蓝色:职务以来2遍的创设是打响的。
    • 红色:职责以来3回的创设是退步的。
    • 黄色:职分以来三遍的营造是马到功成的,可是不牢固(首要归因于有战败的测试)。
    • 灰色:任务未有被施行过照旧被剥夺。
    • Logo闪烁:职责正在实践三回营造
  • 其次列天气(W):使用天气表示义务长时间的三个状态

Paste_Image.png

Paste_Image.png

  • 职责不够健康时要神速接纳修复措施。
  • 别的性质看一下就驾驭了。
  • 点击项目名称就能够进去项目查看项目的局地构建情形。

职责分界面

  • 菜单里的行事空间便是源码库管理的档期的顺序本下载在地面包车型地铁地方,里面能够见见项目源码。

 

陆.二编辑项目并上传到github上

(2)      填写有关新闻后,点击【显明】。

陆.二.1 clone项目导当地

  • 先是克隆github上种类cidemo到本地。

git clone https://github.com/zlcook/cidemo.git

(3)     
营造触发器设置自动营造的时刻。上边包车型地铁是工作日每晚拾点自动推行,这样第3天晚上上班就会见到测试结果了。

陆.2.二编纂代码

  • 本人直接把maven—三手写二个helloWord中的maven项目内容拷贝到该目录下。(这些项目还无法满足职分的须求上面会尾随难点一步一步完善)。
  • 项目涵盖的剧情
    • pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
  <groupId>com.zlcook.studymvn</groupId>
  <artifactId>helloword</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>maven helloword project</name>
<dependencies>
 <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
    <scope>test</scope>
  </dependency> 
</dependencies>
<build>
    <plugins>
    <!--配置插件将main方法的类信息添加到manifest中,从而可以通过命令[java -jar 架包.jar]来执行生成的jar包-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.3</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>com.zlcook.studymvn.helloword.HelloWord</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
  • 主代码:src\main\java\com\zlcook\studymvn\helloword\HelloWord.java

package com.zlcook.studymvn.helloword;
public class HelloWord
{
    public String say(){
        return "hello maven";
    }
    public static void main(String[] args){
        System.out.print(new HelloWord().say());
    }
}
  • 测试代码:src\test\java\com\zlcook\studymvn\helloword\HelloWordTest.java

package com.zlcook.studymvn.helloword;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class HelloWordTest
{
    @Test
    public void testSay(){
        HelloWord helloWord = new HelloWord();
        String result = helloWord.say();
        assertEquals("hello maven",result); 

    }
}

cidemo商旅下内容

这里有4个参数:能够点击前边?查看表达文书档案,*意味着私自时间

6.2.3提交到github上

在cidemo目录下进展如下操作

  • 翻看变动文件
    git status

  • 累加全部文件到缓存中
    git add .

  • 交付文件到本地旅舍
    git commit -m “第一遍提交”

  • 提交到github上的master分支
    git push origin HEAD:master

  • 填写github的用户名和密码

Paste_Image.png

  • 完成

第一个:分钟(0-59)

陆.3塑造项目

  • 在jenkins的helloword职分(任务名称和github上的库房名称赚取分化,当然1致最棒)实行“立刻构建”。

第二个:小时(0-23)

6.叁.一先是次营造

第三个:日(1-31)

六.3.壹.一营造结果停业

Started by user zlcook
Building in workspace C:\Windows\system32\config\systemprofile\.jenkins\workspace\helloword
 > D:\Soft\git\Git\bin\git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > D:\Soft\git\Git\bin\git.exe config remote.origin.url https://github.com/zlcook/cidemo.git # timeout=10
Fetching upstream changes from https://github.com/zlcook/cidemo.git
 > D:\Soft\git\Git\bin\git.exe --version # timeout=10
using GIT_SSH to set credentials 
 > D:\Soft\git\Git\bin\git.exe fetch --tags --progress https://github.com/zlcook/cidemo.git +refs/heads/*:refs/remotes/origin/*
 > D:\Soft\git\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
 > D:\Soft\git\Git\bin\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision e75623ce6b045f7db3667c1dccfb3e3cc61e21c7 (refs/remotes/origin/master)
 > D:\Soft\git\Git\bin\git.exe config core.sparsecheckout # timeout=10
 > D:\Soft\git\Git\bin\git.exe checkout -f e75623ce6b045f7db3667c1dccfb3e3cc61e21c7
 > D:\Soft\git\Git\bin\git.exe rev-list e75623ce6b045f7db3667c1dccfb3e3cc61e21c7 # timeout=10
[helloword] $ cmd.exe /C "D:\Soft\maven\apache-maven-3.3.3\bin\mvn.cmd -s D:\Soft\maven\apache-maven-3.3.3\conf\settings.xml clean deploy && exit %%ERRORLEVEL%%"
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building maven helloword project 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for org.apache.maven.plugins:maven-resources-plugin:jar:2.6 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.109 s
[INFO] Finished at: 2016-11-30T15:07:16+08:00
[INFO] Final Memory: 5M/123M
[INFO] ------------------------------------------------------------------------
[ERROR] Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failure to find org.apache.maven.plugins:maven-resources-plugin:jar:2.6 in http://172.19.201.155:8081/repository/maven-public/ was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
Build step 'Invoke top-level Maven targets' marked build as failure
Finished: FAILURE

第四个:月份(1-12)

6.3.一.2先是次倒闭原因及解决方法

  • 波折原因陈设私服的服务器并未有网,本地缓存了错误,化解方法删掉本地的maven-resources-plugin插件,让私服连接上互连网。
    详尽一点的缘故剖析maven—九使用Nexus创造私服—>三.四.二代理客栈配置消息上面包车型地铁案例。

第五个:星期几(0-7,0和七都意味着礼拜二)

六.3.3回之次营造

 图片 8

陆.叁.二.一创设结果停业

Started by user zlcook
Building in workspace C:\Windows\system32\config\systemprofile\.jenkins\workspace\helloword
 > D:\Soft\git\Git\bin\git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > D:\Soft\git\Git\bin\git.exe config remote.origin.url https://github.com/zlcook/cidemo.git # timeout=10
Fetching upstream changes from https://github.com/zlcook/cidemo.git
 > D:\Soft\git\Git\bin\git.exe --version # timeout=10
using GIT_SSH to set credentials 
 > D:\Soft\git\Git\bin\git.exe fetch --tags --progress https://github.com/zlcook/cidemo.git +refs/heads/*:refs/remotes/origin/*
 > D:\Soft\git\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
 > D:\Soft\git\Git\bin\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision e75623ce6b045f7db3667c1dccfb3e3cc61e21c7 (refs/remotes/origin/master)
 > D:\Soft\git\Git\bin\git.exe config core.sparsecheckout # timeout=10
 > D:\Soft\git\Git\bin\git.exe checkout -f e75623ce6b045f7db3667c1dccfb3e3cc61e21c7
 > D:\Soft\git\Git\bin\git.exe rev-list e75623ce6b045f7db3667c1dccfb3e3cc61e21c7 # timeout=10
[helloword] $ cmd.exe /C "D:\Soft\maven\apache-maven-3.3.3\bin\mvn.cmd -s D:\Soft\maven\apache-maven-3.3.3\conf\settings.xml clean deploy && exit %%ERRORLEVEL%%"
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building maven helloword project 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://172.19.201.155:8081/repository/maven-public/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom
2/8 KB   
6/8 KB   
8/8 KB   

Downloaded: http://172.19.201.155:8081/repository/maven-public/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom (8 KB at 2.9 KB/sec)
Downloading: http://172.19.201.155:8081/repository/maven-public/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar
2/29 KB   
6/29 KB   
10/29 KB   
14/29 KB   
18/29 KB   
22/29 KB   
26/29 KB   
29/29 KB   

Downloaded: http://172.19.201.155:8081/repository/maven-public/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar (29 KB at 18.0 KB/sec)
Downloading: http://172.19.201.155:8081/repository/maven-public/org/apache/maven/plugins/maven-compiler-plugin/3.1/maven-compiler-plugin-3.1.pom

Downloaded: http://172.19.201.155:8081/repository/maven-public/org/apache/maven/plugins/maven-compiler-plugin/3.1/maven-compiler-plugin-3.1.pom (0 B at 0.0 KB/sec)
Downloading: http://172.19.201.155:8081/repository/maven-public/org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom

Downloaded: http://172.19.201.155:8081/repository/maven-public/org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom (0 B at 0.0 KB/sec)
Downloading: http://172.19.201.155:8081/repository/maven-public/org/apache/maven/plugins/maven-compiler-plugin/3.1/maven-compiler-plugin-3.1.jar
....省略下载各种构件
Downloaded: http://172.19.201.155:8081/repository/maven-public/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar (0 B at 0.0 KB/sec)

Downloaded: http://172.19.201.155:8081/repository/maven-public/com/google/guava/guava/11.0.2/guava-11.0.2.jar (0 B at 0.0 KB/sec)
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\helloword-0.0.1-SNAPSHOT.jar with C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\helloword-0.0.1-SNAPSHOT-shaded.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ helloword ---
[INFO] Installing C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\helloword-0.0.1-SNAPSHOT.jar to D:\Soft\maven\maven_jar\repository\com\zlcook\studymvn\helloword\0.0.1-SNAPSHOT\helloword-0.0.1-SNAPSHOT.jar
[INFO] Installing C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\pom.xml to D:\Soft\maven\maven_jar\repository\com\zlcook\studymvn\helloword\0.0.1-SNAPSHOT\helloword-0.0.1-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ helloword ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:11 min
[INFO] Finished at: 2016-11-30T15:17:39+08:00
[INFO] Final Memory: 19M/159M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project helloword: Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Build step 'Invoke top-level Maven targets' marked build as failure
Finished: FAILURE

(四)      创设部分扩张营造步骤,这里选拔Windows批管理命令。

6.三.2.三次之次失败原因剖析及消除办法

  • 小发掘:首先我们开掘地面maven去nexus私服上检讨构件更新时开采maven-resources-plugin未有(上一步删掉了),然后开始展览下载,前边对于别的的预制构件实行检讨开采未有立异所以都未曾下载(0
    B at 0.0 KB/sec)。
  • a.分析原因:
    从没为项目安插构件发表的岗位。

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project helloword: Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter -> [Help 1]
  • b.配置发布到nexus私服上
    上边是在类型的pom中增添生成构件发表的职位,当然如若私服供给证实音信,须求在settings.xml文件的services中安顿他们的求证新闻。案例请看maven—九使用Nexus创设私服—->伍.贰陈设Maven项目构件至Nexus。

<?xml version="1.0" encoding="UTF-8"?>
<project>
...
   <!--设置项目统一构件文件的编码-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
...
  <!--配置项目生成的构件部署到Nexus私服上 -->
  <distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <name>Nexus ReleaseRepository</name>    
        <url>http://172.19.201.155:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <name>Nexus SnapshotsRepository</name>      
        <url>http://172.19.201.155:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
</project>

c.提交代码到github上
修改了代码则供给将转移新闻交到到github上,操作步骤参考上面。

d.再度创设职务成功

  • 因为布置任务的时候配置了【每隔一四分钟轮询源码库,尽管开掘有创新的时候创设本项目】和【开掘github上有变化时营造本项目】,所以作者此番未有手动营造,让jenkins通过构建触发器来机关构建项目。

  • 营形成功后义务的console输出

Started by an SCM change
Building in workspace C:\Windows\system32\config\systemprofile\.jenkins\workspace\helloword
 > D:\Soft\git\Git\bin\git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > D:\Soft\git\Git\bin\git.exe config remote.origin.url https://github.com/zlcook/cidemo.git # timeout=10
Fetching upstream changes from https://github.com/zlcook/cidemo.git
 > D:\Soft\git\Git\bin\git.exe --version # timeout=10
using GIT_SSH to set credentials 
 > D:\Soft\git\Git\bin\git.exe fetch --tags --progress https://github.com/zlcook/cidemo.git +refs/heads/*:refs/remotes/origin/*
 > D:\Soft\git\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
 > D:\Soft\git\Git\bin\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision ae2a6a18ebfd933e4fa81c3f7f691d8fb870a240 (refs/remotes/origin/master)
 > D:\Soft\git\Git\bin\git.exe config core.sparsecheckout # timeout=10
 > D:\Soft\git\Git\bin\git.exe checkout -f ae2a6a18ebfd933e4fa81c3f7f691d8fb870a240
 > D:\Soft\git\Git\bin\git.exe rev-list 15e935f15d8ac3190d7423eb5132b2e847a518ee # timeout=10
[helloword] $ cmd.exe /C "D:\Soft\maven\apache-maven-3.3.3\bin\mvn.cmd -s D:\Soft\maven\apache-maven-3.3.3\conf\settings.xml clean deploy && exit %%ERRORLEVEL%%"
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building maven helloword project 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ helloword ---
[INFO] Deleting C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloword ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\src\main\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloword ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ helloword ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ helloword ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ helloword ---
[INFO] Surefire report directory: C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.zlcook.studymvn.helloword.HelloWordTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.038 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ helloword ---
[INFO] Building jar: C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\helloword-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-shade-plugin:2.4.3:shade (default) @ helloword ---
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\helloword-0.0.1-SNAPSHOT.jar with C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\helloword-0.0.1-SNAPSHOT-shaded.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ helloword ---
[INFO] Installing C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\target\helloword-0.0.1-SNAPSHOT.jar to D:\Soft\maven\maven_jar\repository\com\zlcook\studymvn\helloword\0.0.1-SNAPSHOT\helloword-0.0.1-SNAPSHOT.jar
[INFO] Installing C:\Windows\System32\config\systemprofile\.jenkins\workspace\helloword\pom.xml to D:\Soft\maven\maven_jar\repository\com\zlcook\studymvn\helloword\0.0.1-SNAPSHOT\helloword-0.0.1-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ helloword ---
Downloading: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/0.0.1-SNAPSHOT/maven-metadata.xml
778/778 B   

Downloaded: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/0.0.1-SNAPSHOT/maven-metadata.xml (778 B at 2.4 KB/sec)
Uploading: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/0.0.1-SNAPSHOT/helloword-0.0.1-20161201.015626-2.jar
2/4 KB      
4/4 KB   

Uploaded: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/0.0.1-SNAPSHOT/helloword-0.0.1-20161201.015626-2.jar (4 KB at 28.1 KB/sec)
Uploading: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/0.0.1-SNAPSHOT/helloword-0.0.1-20161201.015626-2.pom
2/3 KB   
3/3 KB   

Uploaded: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/0.0.1-SNAPSHOT/helloword-0.0.1-20161201.015626-2.pom (3 KB at 21.7 KB/sec)
Downloading: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/maven-metadata.xml
288/288 B   

Downloaded: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/maven-metadata.xml (288 B at 5.6 KB/sec)
Uploading: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/0.0.1-SNAPSHOT/maven-metadata.xml
778/778 B   

Uploaded: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/0.0.1-SNAPSHOT/maven-metadata.xml (778 B at 7.4 KB/sec)
Uploading: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/maven-metadata.xml
288/288 B   

Uploaded: http://172.19.201.155:8081/repository/maven-snapshots/com/zlcook/studymvn/helloword/maven-metadata.xml (288 B at 2.8 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.865 s
[INFO] Finished at: 2016-12-01T09:56:27+08:00
[INFO] Final Memory: 20M/198M
[INFO] ------------------------------------------------------------------------
Finished: SUCCESS

copy F:\Python\firstselenium\smoketest\*.py

下一个demo

cidemo项目不是3个javaEE项目,近来不曾关系到tomcat,后边会做四个javaEE项目,通过不断集成把品种活动布署到tomcat上。当然在那在此之前本身要学会编辑shell脚本。

python smoketests.py

总结

那篇小说未有写持续集成的邮件举报,3个品类在任何时间任何地方集成进程中若是出错了,这些错误音讯要立即反映给项目首席营业官及导致此番错误的开垦人士,以便尽早修复。下1篇小说笔者会介绍maven—1一配置jenkins的邮件举报

 图片 9

留言

有哪些不懂的同步索求一下啊,欢迎留下宝贵意见,喜欢就点个赞吧(哈哈),多谢鼓励。

(伍)      创设后操作,扩展操作步骤,选拔Publish JUnit test result
report,然后在测试报告字段填写
测试报告/*.xml。(测试报告是测试套件中安顿的output参数的值,看上边包车型客车smoketests.py的代码就明白了)那样Jenkins每便运营测试的时候都会从那几个文件夹读取测试结果。

 图片 10

(陆)      配置完结后点击【保存】。

(7)      点击下图的【立时营造】,灰黄就代表成功了。

 图片 11

(八)     
点击上海体育地方的摩登测试结果能够查阅最新的测试结果。(也能够点击具体Build
History上边包车型地铁时刻,查看具体哪1遍营造的测试结果,点击深灰的球形Logo的话,能够查看调节台出口)

图片 12

图片 13

上边的代码部分,主要的即是测试套件中的那句,其余的友爱随意写二个或多少个测试用例就行了

xmlrunner.XMLTestRunner(verbosity=2,output='测试报告').run(smoke_tests)

(四)smoketests.py

 1 import unittest
 2 from searchtest import SearchTest
 3 from homepagetest import HomePageTest
 4 from xmlrunner import xmlrunner
 5 #获取SearchTest类 和 HomePageTest类中的所有测试方法
 6 search_test = unittest.TestLoader().loadTestsFromTestCase(SearchTest)
 7 home_page_test = unittest.TestLoader().loadTestsFromTestCase(HomePageTest)
 8 #创建一个包括SearchTest和HomePageTest的测试套件
 9 smoke_tests = unittest.TestSuite([home_page_test,search_test])
10 #运行测试套件
11 # unittest.TextTestRunner(verbosity=2).run(smoke_tests)
12 xmlrunner.XMLTestRunner(verbosity=2,output='测试报告').run(smoke_tests)

(五)searchtest.py

 1 import  sys
 2 import unittest
 3 from selenium import webdriver
 4 from selenium.webdriver.common.action_chains import ActionChains
 5 from selenium.webdriver.support.ui import WebDriverWait
 6 class SearchTest(unittest.TestCase):
 7     @classmethod
 8     def setUpClass(cls):
 9         cls.driver = webdriver.Chrome()
10         # cls.driver.implicitly_wait(20)
11         cls.driver.maximize_window()
12         cls.driver.get("https://www.cnblogs.com/")
13 
14     def test_search_by_category(self):
15         category_list = ['Java', 'C++', 'PHP', 'Delphi', 'Python', 'Ruby',\
16                          'C语言', 'Erlang', 'Go', 'Swift', 'Scala', 'R语言', 'Verilog', '其它语言']
17         #定位首页网站分类中的编程语言
18         search_class = self.driver.find_element_by_xpath('//li/a[@href="/cate/2/"]')
19         #光标悬停在“编程语言”上
20         ActionChains(self.driver).move_to_element(search_class).perform()
21         WebDriverWait(self.driver, 20).until(lambda l: len(l.find_elements_by_xpath( \
22             '//div[@id="cate_content_block_2"]/div[@class="cate_content_block"]/ul/li')) == 14)
23         # 以列表形式返回编程语言下的所有小类
24         search_small = self.driver.find_elements_by_xpath(\
25             '//div[@id="cate_content_block_2"]/div[@class="cate_content_block"]/ul/li')
26         small_cate = []
27         for s in search_small:
28             #去掉小类最后面的(0),并添加到列表small_cate中
29             small = str(s.text).split('(')
30             small_cate.append(small[0])
31         #检查表达式是否为true(此处检查编程语言下的小类是否与预期结果一致)
32         self.assertTrue(small_cate == category_list)
33         self.assertEqual(small_cate,category_list)
34 
35     def test_search_by_look(self):
36         seach_class = self.driver.find_element_by_xpath('//li/a[@href="/cate/2/"]')
37         #定位编程语言下的小类Python
38         seach_small = self.driver.find_element_by_xpath('//li/a[@href="/cate/python/"]')
39         ActionChains(self.driver).move_to_element(seach_class).click(seach_small).perform()
40         #检查打开的网页标题是不是 Python - 网站分类 - 博客园
41         self.assertEqual(self.driver.title,"Python - 网站分类 - 博客园" )
42 
43     @classmethod
44     def tearDownClass(cls):
45         cls.driver.quit()
46 #加上下面2句,可以通过命令行运行测试,不加的话不影响通过IDE运行测试
47 if __name__ == '__main__':51     #加verbosity=2参数,在命令行中显示具体的测试方法
52     unittest.main(verbosity=2)

(六)homepagetest.py

 1 import sys
 2 import  unittest
 3 from selenium import  webdriver
 4 from selenium.common.exceptions import NoSuchElementException
 5 from selenium.webdriver.common.by import By
 6 class HomePageTest(unittest.TestCase):
 7     @classmethod
 8     def setUpClass(cls):
 9         cls.driver = webdriver.Chrome()
10         cls.driver.implicitly_wait(10)
11         cls.driver.maximize_window()
12         cls.driver.get("https://www.cnblogs.com/")
13 
14     def test_search_field(self):
15         #检查博客园首页有没有搜索框,is_element_present()是自定义的方法
16         self.assertTrue(self.is_element_present(By.ID,"zzk_q"))
17     def test_search_btn(self):
18         # 检查博客园首页有没有找找看按钮
19         self.assertTrue(self.is_element_present(By.CLASS_NAME,"search_btn"))
20 
21     # 检查博客园首页菜单栏信息是否与预期一致
22     def test_menu(self):
23         menu_data =['园子https://home.cnblogs.com/', '新闻https://news.cnblogs.com/',
24                     '博问https://q.cnblogs.com/', '闪存https://ing.cnblogs.com/',
25                     '小组https://group.cnblogs.com/', '收藏https://wz.cnblogs.com/',
26                     '招聘https://job.cnblogs.com/', '班级https://edu.cnblogs.com/',
27                     '找找看http://zzk.cnblogs.com/']
28         #以列表形式返回博客园首页菜单栏信息
29         self.check_menu = self.driver.find_elements_by_xpath('//div[@id="nav_menu"]/a')
30         the_menu = []
31         for c in self.check_menu:
32             #将博客园首页的菜单名称和URL添加到列表the_menu
33             the_menu.append(c.text + c.get_attribute('href'))
34         #检查2个列表是否一致(检查博客园首页的菜单名称及URL是否和预期一致)
35         self.assertListEqual(the_menu,menu_data)
36 
37     # 找到元素,返回True,否则返回False
38     def is_element_present(self,how,what):
39         try:
40             self.driver.find_element(by=how,value = what)
41         except NoSuchElementException as e:
42             return False
43         return True
44 
45     @classmethod
46     def tearDownClass(cls):
47         cls.driver.quit()
48 
49 # 加上下面2句,可以通过命令行运行测试,不加的话不影响通过IDE运行测试
50 if __name__ == '__main__':54     # 加verbosity=2参数,在命令行中显示具体的测试方法
55     unittest.main(verbosity=2)

相关文章