目的:将selenium用例集成到Jenkins,需要执行时,只需要执行curl命令即可。

1.准备selenium测试脚本

from selenium import webdriver
import sys
from threading import Thread
from time import sleep, ctime
#使用多线程启动多个浏览器完成测试,并生成report
def test_baidu(browser,value):
if browser == "safari":
driver = webdriver.Safari()
elif browser == "chrome":
path = sys.path[0].replace("testcase", "") + "driver/chromedriver"
driver = webdriver.Chrome(executable_path=path)
elif browser == "firefox":
path = sys.path[0].replace("testcase", "") + "driver/geckodriver"
driver = webdriver.Firefox(executable_path=path)
driver.implicitly_wait(5)
driver.get("http://www.baidu.com")
print("打开百度")
driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']").send_keys(value)
driver.find_element_by_xpath("//input[@value='百度一下' and @id='su']").click()
result_text = driver.find_element_by_xpath("//span[@class='nums_text']").text
assert "百度为您找到相关结果约" in result_text
sleep(3)
driver.quit()
print("退出", browser) if __name__ == "__main__":
lists = {"chrome": "叶孤城", "firefox": "西门吹雪", "safari": "陆小凤"}
threads = []
files = range(len(lists))
for browser, value in lists.items():
t = Thread(target=test_baidu, args=(browser, value))
threads.append(t)
for t in files:
threads[t].start()
for t in files:
threads[t].join()
print("end:", ctime())

2.建立Jenkins任务

可以构建定时任务、在其他任务构建完成后触发,本次采用命令行调用的方式构建

2.1生成用户的token

进入用户——设置,选择API TOKEN,添加name并生成一个token,







将生成的token复制保存

2.2获取用户已有的token

用户中心-凭据-获取已有的token

2.3建立Jenkins任务

  • 1.构建一个自由风格的项目SeleniumOnJenkins
  • 2.构建触发器,填入token
  • 3.构建,执行shell命令
python /Users/chenshanju/PycharmProjects/SeleniumOfJenkins/testcase/BaiduSearch.py

3.命令行执行

curl -n -X POST http://127.0.0.1:8080//job/SeleniumOnJenkins/build?token=11da383400045fcd47fecc357dc97f84a8 --user chenshanju:123456

结果:

4.分享report报告

4.1windows通过部署Apache服务共享report报告

https://blog.csdn.net/sunqian666888/article/details/78561399

  • 1.下载,解压,将Apache24文件夹剪切到D盘
  • 2.修改配置文件,只需要修改第37行即可 Define SRVROOT "d:/Apache24"
  • 3.运行服务器 D:/Apache/bin/httpd.exe
  • 4.服务器搭建成功 主机IP:port

    我将配置文件中的路径修改为report路径,未生效。所以,需要修改测试脚本中的report报告目录。

4.2windows通过IIS服务共享report报告

https://jingyan.baidu.com/article/eae0782753a38c1fec548526.html

如果通过这种方式,指定的是文件,需要保证每次的测试报告名称相同;指定目录,没有尝试。

4.3mac通过自带的Apache共享report报告

https://www.cnblogs.com/silence-wzx/p/5137766.html

sudo apachectl start
sudo apachectl restart
sudo apachectl stop

apache目录:/Library/WebServer/Documents/

将report文件复制到Apache目录下:sudo cp report.html /Library/WebServer/Documents/

http://127.0.0.1/report.html即可访问目录下的文件

Jenkins集成selenium的更多相关文章

  1. jenkins集成jmeter-进阶篇

    1.gitlab自动触发jenkins构建 1⃣️安装插件: 2⃣️新建工程,设置git url,build when a change is pushed auto.sh /bin/sh echo ...

  2. Jenkins集成jacoco收集集成测试覆盖率

    Jenkins集成jacoco收集集成测试覆盖率 2020-02-28 目录 0 整体思路1 安装版本2 全局工具配置3 Jenkins创建JacocoIntegrateTestDemo项目  3.1 ...

  3. Jenkins怎么安装?Jenkins控制台输出乱码怎么处理?Jenkins执行selenium脚本时浏览器不显示怎么处理?

    今天我们来看一看Jenkins的安装. 首先我们看一下Jenkins是什么,能够干什么.Jenkins呢是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开 ...

  4. Jenkins 集成打包和上传 App Store 的冲突

    周一下午用 Jenkins 集成打包,遇到了一个很奇怪的问题,之前上传到 APP Store 的时候 Build Settings->“Code Signing Resource Rules P ...

  5. Jmeter+Jenkins集成html报告显示问题

    在J meter+Jenkins集成生成的html报告时,出现如下问题:无法正常显示表格,detail内容无法折叠和展开操作. 解决方法:执行下列脚本行 在Jenkins :系统管理--脚本命令行 S ...

  6. jenkins 集成 redmine 账户验证的方案

    jenkins 集成 redmine 账户验证的方案 赖勇浩(http://laiyonghao.com) 动机 Jenkins 是最著名的持续集成工具,又因为它开源免费.插件众多,成为了许多团队做持 ...

  7. Jenkins集成taffy进行自动化测试并输出测试报告

    本文主要介绍Jenkins集成taffy/nose框架进行自动化测试并输出测试报告方法. 0. 测试环境 Jenkis主节点部署在CentOS系统上,子节点为Win10 64位系统(即我们本机运行自动 ...

  8. Jenkins集成Docker镜像实现自动发布

    1. 思路&流程 Jenkins集成Docker镜像实现自动发布与Jenkins发布mavne项目思路一样总体流程 为:Jenkins 拉去远端源码 -- gitl实现应用打包 -- jenk ...

  9. ldap配置系列二:jenkins集成ldap

    ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...

随机推荐

  1. 解决 Faster R-CNN 图片中框不在一张图片上显示的问题

    目录 解决 Faster R-CNN 图片中框不在一张图片上显示的问题 发现问题 如何解决这个问题? 参考issues 解决 Faster R-CNN 图片中框不在一张图片上显示的问题 发现问题 在使 ...

  2. 使用javascript模拟常见数据结构(三)

    六.字典和散列表 我们已经知道,集合表示一组互不相同的元素(不重复元素).在字典中,存储的是键值对,其中键值是用来查询特定的元素的.字典和集合是很相似的,集合采用[值,值]的方式存储,而字典则是以[键 ...

  3. Flyweight(享元)

    意图: 运用共享技术有效地支持大量细粒度的对象. 适用性: 一个应用程序使用了大量的对象. 完全由于使用大量的对象,造成很大的存储开销. 对象的大多数状态都可变为外部状态. 如果删除对象的外部状态,那 ...

  4. eclipse下maven springMVC 整合 mybatis

    参考文档:http://blog.csdn.net/zhshulin/article/details/37956105   1.搭建maven工程,具体参见我另一篇博客:http://www.cnbl ...

  5. 关于 Flutter的Button按钮没有高度设置

    flutter 里面 RaisedButton.FloatingActionButton.FlatButton.OutlineButton 中四个button都无高度设置,如下用RaisedButto ...

  6. bzoj1054: [HAOI2008]移动玩具 状压+爆搜即可

    题意:在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初的玩具状态 ...

  7. Collections中的各种方法

    一.各种方法介绍 Counter 统计个数   elements  most_common  subtract defaultdict 字典默认值 ChainMap  合并多个映射对象(字典) Ord ...

  8. 如何在.Net的MySqlCommand里面使用MySql用户自定义变量?

    Mysql使用@符号代表变量,但C#也恰好使用@代表用户自定义变量,这样两者就会正好冲突了. SELECT () AS rowId, u.*, r.RoleName FROM userinfo u L ...

  9. RabbitMQ三种Exchange模式

    RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...

  10. Jenkins插件开发(二)-- HelloWorld

    在上一篇blog中我们讲了如何搭建jenkins插件的开发环境,接下来介绍如何开发我们的插件. 创建HelloWorld插件 学习每门新语言的时候,我们都会写一个HelloWorld程序,这里介绍的是 ...