python+selenium+Jenkins+Firefox持续集成

目的

利用Jenkins来跑python+selenium编写的脚本,火狐浏览器来展示

本地需要安装的软件

python
下载地址:https://www.python.org/getit/
我下载的版本为:

image.png

可根据情况自行选择
1.特别要注意选上pip和Add python.exe to Path,然后一路点“Next”即可完成安装。
2.默认会安装到C:\Python3.6.1目录下,然后打开命令提示符窗口,敲入python后,会出现两种情况:
情况一,安装成功:
image.png

情况二,安装失败:
‘python’不是内部或外部命令,也不是可运行的程序或批处理文件。

这是因为Windows会根据一个Path的环境变量设定的路径去查找python.exe,如果没找到,就会报错。如果在安装时漏掉了勾选Add python.exe to Path,那就要手动把python.exe所在的路径C:\Python3.6.1添加到Path中。
环境配置:计算机右键属性-高级系统管理-环境变量-path
selenium
一、在C:\python3.6.1\Scripts打开cmd窗口输入:pip3(有一大串内容出现)

image.png

二、cmd输入指令安装selenium:pip3 install selenium==2.53.6
如果不录入版本,默认安装最高级版本
三、验证selenium
在程序中能正确引用,不报错
image.png

Jenkins
请参照上一篇文章

脚本

一、访问百度

import unittest
from selenium import webdriver
from time import sleep
class BaiduTest(unittest.TestCase):
"""百度首页搜索测试用例"""
def setUp(self):
#logger.info('=======Yest case:init========')
#驱动目录
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
path = "C:\Users\lad\AppData\Local\Google\Chrome\Application\chromedriver.exe"
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = u"http://www.baidu.com"

def test_baidu_search(self):
#logger.info('=======Yest case:search baidu========')
driver = self.driver
print(u"开始[case_0001]百度搜索")
driver.get(self.base_url)
# 验证标题
self.assertEqual(driver.title, u"百度一下,你就知道")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(u"开源测试你懂的")
driver.find_element_by_id("su").click()
sleep(3)
# 验证搜索结果标题
self.assertEqual(driver.title, u"开源测试你懂的_百度搜索")
def tearDown(self):
#logger.info('=======Yest case:quit========')
self.driver.quit()

二、运行脚本

>htmlPath = u"C:\\base\\demo\\testReport.html"
fp = open(htmlPath, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                           title=u"百度测试",
                                           description=u"测试用例结果")
runner.run(suite)
fp.close()
#发送邮件
senfemail_fujian.sendmail(htmlPath)

三、生成报告的脚本

image.png

此文档官网可以下载到,python3可能需要更改一下
四、发送邮件的脚本

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
def sendmail(mailtile):
print("发送HTML邮件示例")
# 邮件发送者
sender = "XXXX"
# 邮件接收地址列表,中间逗号隔开
receivers = "XXXXX"
#抄送者
acc = "XXXXX"
# 发送内容构建
# html标识发送内容为文本格式
msg = MIMEMultipart()
#发送者
msg["From"] = sender
#接受者
msg["To"] = receivers
#抄送者
msg['Cc'] = acc
# 构建邮件标题
msg["Subject"] = Header("搜索百度的测试报告", "utf-8")
# 构建邮件正文内容
msg.attach(MIMEText("附件为报告的内容,望多多指教!", "plain", "utf-8"))
# 构造附件,多个附件同理
#读取xlsx文件作为附件,open()要带参数'rb',使文件变成二进制格式,从而使'base64'编码产生作用,否则附件打开乱码
attach1 = MIMEText(open(mailtile, 'rb').read(), "base64", "utf-8")
attach1["Content-Type"] = "application/octet-stream"
# 这里filename随意写,将会在邮件中显示
attach1["Content-Disposition"] = "attrachment;filename="+mailtile+""
# 关联附件到邮件中
msg.attach(attach1)
# smtp服务
smtpserver = "smtp.163.com"
smtpport = 25
# 发送人邮件用户名或专用于smtp账户用户名
username = "XXXXX"
# 发送人邮件密码或专用于smtp账户的密码
password = "*****"
# 构建smtp对象
smtp = smtplib.SMTP()
# 连接到smtp服务
con = smtp.connect(smtpserver, smtpport)
print("连接结果: ", con)
# 登录smtp服务
log = smtp.login(username, password)
print("登录结果:", log)
# 发送邮件
print(receivers)
res = smtp.sendmail(sender, receivers.split(','), msg.as_string())
print("邮件发送结果: ", res)
# 退出
smtp.quit()
print("send email finish")

Jenkins中的配置

写上项目名称,剩下主要的就是构建


image.png

发送邮件也可以在Jenkins中配置

运行的结果

image.png

蓝色的标识成功,红色的标识失败且成功的可以收到邮件

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

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,211评论 4 16
  • 前言 在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录、结果等等等相关信息通过自动的手段发送给相关人员...
    苦叶子阅读 641评论 0 5
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,562评论 1 118
  • 基础1.r''表示''内部的字符串默认不转义2.'''...'''表示多行内容3. 布尔值:True、False(...
    neo已经被使用阅读 1,668评论 0 5
  • 一、相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 1...
    LizPL阅读 1,346评论 0 3