前言
为了高质量的软件交付,组织必须转向自动化流程,手动流程太容易出错,效率低下。对于执行CD和devops的团队来说,自动化变得越来越重要,大家只需要专注在code和review中,其它过程都尽可能的自动化。
Jenkins执行python脚本运行测试并邮件发送报告
1 | """ |
前言
为了高质量的软件交付,组织必须转向自动化流程,手动流程太容易出错,效率低下。对于执行CD和devops的团队来说,自动化变得越来越重要,大家只需要专注在code和review中,其它过程都尽可能的自动化。
Jenkins执行python脚本运行测试并邮件发送报告
1 | """ |
前言
如何获取table内容动态tr和td的dom对象,今天给大家总结了方法。
获取table中DOM元素方法总结
1 | <table id="projectstatus" class="sortable pane bigtable stripped-odd"><tbody><tr class="header"><th tooltip="上次构建状态" title="上次构建状态"><a href="#" class="sortheader"> S<span class="sortarrow"> </span></a></th><th tooltip="构建晴雨表" title="构建晴雨表"><a href="#" class="sortheader"> W<span class="sortarrow"> </span></a></th><th initialsortdir="down"><a href="#" class="sortheader">名称<span class="sortarrow"> ↓</span></a></th><th><a href="#" class="sortheader">上次成功<span class="sortarrow"> </span></a></th><th><a href="#" class="sortheader">上次失败<span class="sortarrow"> </span></a></th><th><a href="#" class="sortheader">上次持续时间<span class="sortarrow"> </span></a></th><th width="1"><a href="#" class="sortheader"> <span class="sortarrow"> </span></a></th><th><a href="#" class="sortheader"> <span class="sortarrow"> </span></a></th></tr><tr id="job_FCA玛莎拉蒂自动化测试" class=" job-status-blue"><td data="4"><img src="/static/ecc2f937/images/24x24/blue.png" alt="成功" tooltip="成功" style="width: 24px; height: 24px; " class="icon-blue icon-md" title="成功"></td><td data="100" class="healthReport" onmouseover="this.className='healthReport hover';return true; |
1.获取动态tr个数
1 | describe('处理table方法总结', function () { |
2.获取动态tr去断言td内容
1 | describe('处理table方法总结', function () { |
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。
更多文章关注小编公众号:自动化测试 To share
前言
Cypress含有多种定位方式我们无需担心因为定位导致测试失败,Cypress有独一无二的定位策略能使你摆脱元素定位的噩梦。
Cypress专有选择器
举例:
1 | <button id='main' class = 'btn' data-cy = 'submit'>submit<button><button id='main' class = 'btn' data-test= 'submit'>submit<button><button id='main' class = 'btn' data-testid= 'submit'>submit<button> |
获取元素方法:
1 | cy.get('[data-cy=submit]').click() |
举例:
1 | <tbody> |
#id选择器通过html元素id属性来获取DMO
获取用户名input元素方法:
1 | cy.get('#account').click() |
类选择器通过html元素class属性来获取DMO
获取用户名input元素方法:
1 | cy.get('.form-control').click() |
类选择器通过html元素class属性来获取DMO
获取用户名input元素方法:
1 | cy.get('[input[id = "account"]]').click() |
:nth-child(n)选择器匹配属于其父元素的第n个子元素,不论元素的类型。
获取用户名DOM元素方法:
1 | cy.get(tbody > tr:nth-child(1) > th') |
Cypress可以使用jQuery选择器定位
1 | Cypress.$('#account') 等价于 cy.get('#account') |
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。
获取DOM元素基本方式
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。
前言
一直以来,端到端的测试都是前端开发最头疼的事情。如果没有好的测试工具,一旦需求发生改变,就需要手工测试,费时费力,还会有漏网的 bug。最近接触了一款开箱即用的端到端测试工具——Cypress,真心不错,Cypress可以对在浏览器中运行的任何东西进行快速、简单和可靠的测试。
windows环境安装
1.安装node.js
官网下载地址:
https://nodejs.org/en/download/nodejs.org
下载后一路傻瓜式安装,安装完成后,运行cmd,输入node –v查看版本号,然后输入npm -v 出现如下图说明安装成功
2.安装Cypress
自己本地电脑新建一个目录Ui_test,cd 到目录,执行 npm 指令安装
cd D:\workspace\Ui_test
npm install cypress –save-dev (默认安装最新版)
npm install –save-dev cypress@4.5.0 (指定4.5.0版本)
这里博主安装的是4.5.0版本,安装会很慢,耐心等待会。
出现如下说明安装成功了
启动cypress
首先在D:\workspace\UI_test目录下新建一个 package.json 文件配置如下内容
1 | { |
现在,您可以在D:\workspace\Ui_test目下用如下命令启动
npm run cypress:open或者npx cypress open
启动成功展示:
2.现在我们开始写第一个自动化示例程序:
官方文档:
https://docs.cypress.io/guidesdocs.cypress.io
先说一下cypress的目录结构。cypress共有七个目录,还有一个cypress.json文件
编写测试case
脚本实现功能:
1.输入访问地址
2.获取元素
3.输入账号密码
4.登陆
5.断言
在 integration 目录下新建你的工程目录,如demo,下面拿login.js文件为实例
describe 声明一个测试用例集
beforeEach 测试用例前置操作,相当于setup
it声明了一个测试用例
cy.get 定位元素,用css selector定位选择器
should 断言控件含有内容
cy.visit(“/地址”)
case编写完切换到项目根目录执行命令npm run cypress:open或者npx cypress open
运行效果
生成测试报告
npm安装 npm install –save-dev mocha mochawesome mochawesome-merge mochawesome-report-generator
在 cypress.json 设置相关参数:
1 | { |
执行 npx cypress run或者npm run cypress:open
出现如下图说明执行成功了
生成html测试报告
生成xxx.mp4视频
想转行做自动化测试的朋友们,想追求新技术助力公司成长的朋友们,未来5年弯道超车的机会,也许就在今天!
推荐几个好的学习素材
https://github.com/cypress-io/cypressgithub.com
https://github.com/cypress-io/cypress-example-recipes/github.com
https://github.com/cypress-io/cypress-example-kitchensink/github.com
中国共产党走过了100年 我作为一名党员的时间是19年 在校园时代初入党的我稚气未脱 入党那时给我的感觉更多的是一种青年对比同龄人的自豪 入党让我又多了一些责任感 我成长在军人家庭 性格直率 爱憎分明 直言不讳 我喜欢的工作环境也是希望人人能够坦诚相待 关心彼此
那么多人拥护共产党 党最值得自豪的最成功地方就是让大多数普通党员保持了奉献服务的本色和初心 并且因此产生自豪感荣誉感 感染别人的上进心 党领导集体的另一个优点就是学习 能看到不足 能快速学习 能快速适应 不断进步
党走过一些弯路 也有过灰暗的错误经历 最后实践出来一句话 实事求是 遇到事情 刨根问底弄清楚 不道听途说 不轻言轻信 相信每一个人 也直面每个问题 最终能够取得安心
己欲立而立人 己欲达而达人 只有自己活明白 觉得自己明白 觉得自己正确 对别人的是非保持漠不关心 或者瞧不起别人就施以鄙视 我觉得都是一样的自私 因为不好的情绪和积极的情绪一样 都会传染 表达了负面情绪 并不会让这个世界变好 也许自己也不会因此舒服多久 正常人的内心都是很柔软的
最近公司人多了起来 我也确实听到了一些文化反馈 同件事 我问不同的人 反馈的看法不同 这是挺可怕的 我挺希望相关的同学能够多沟通 而不是彼此不沟通 但是心生疑虑 觉得提出来又恶心 如果你放在心里不舒服 何不把他讲出来 弄明白
我前阵子发了一个运营中心成立的邮件 因为在出差途中 我用手机排版 但是忽略了很多人用pc收件 于是出现了落款和换行的不整齐 我发出去后 马上就有人提醒我 跟我说以后要注意 我觉得这就挺好 彼此关心 互相提醒
但如果我们都觉得说了也白说 那彼此都不会变好了
每个人做事一定有原因 或者潜意识 如果造成别人不理解 不舒服 自己有责任了解 不舒服的对方也可以问出来你为什么要这样说这样做 问了 可能彼此就多一些了解 我曾经有很多不自觉不自知的缺点 都是在工作中一点点被指出来 我才意识到改进 我们各自的缺点 总是被爱的人纵容 但长久的爱不仅仅是忍耐 还有启示 叫醒他人的迷途 也是爱
有话不直说绕弯子 旁敲侧击打听 对没有过错的人扣帽子 拿公司或者其他领导的话上纲上线的施压 用一些所谓的招数给别人使绊子 这些都是很差劲的行为 对于这些行为 在我这里不能包容
有疑问直接问 觉得不明白跟当事人或者负责人指出来 一件事情推动到底 推不动了可以坚持 比如去找彼此的上级讲明原因取得共识 不能被说服的事发起会议讨论 给我或者合伙人邮件或者微信 我们有许多方法让彼此晚上睡觉踏实 不要成为他人的毒药 尽可能温暖善良
党的一百年 酸甜苦辣都尝遍 这背后有许多付出和牺牲 有今天的发展成就和信心 也不是任何一两个人的单打独斗 这是集体主义的胜利 不需要每个人每天都是英雄 但是大家都尊重英雄 做好自己 都心向正念 日常累积善举 危难之际有人挺身而出而不会四顾无人…
总而言之 希望同行的同学 能够坚持善良 敢为 有所为
docker的基本操作不做赘述,随用随查即可,常用到的是如何创建打包镜像,这个镜像是用来打包的,可能需要调整镜像的一些配置:
commit: 提交一个具有新配置的容器成为镜像,后面跟容器的name 或者容器Id ,最后是生成新镜像的名字
1 | docker commit trusting_kare ccr.ccs.tencentyun.com/aiforward_saas_fe/fe_fpms_build:202107141358 |
打包成容器以后,就可以推送到镜像仓库:
1 | docker push ccr.ccs.tencentyun.com/aiforward_saas_fe/fe_fpms_build:202107141358 |
随着项目开发的进行会经历一个混乱到整齐划一的过程,这个过程中会产生一系列冗余代码,这时候通过useless-files-webpack-plugin这个插件,可以帮助我们删除项目中无用的文件;
大多数项目随着时间的推移,经常会摒弃掉一部分功能, 但大多数只是入口关闭, 或注释掉功能代码块, 依赖的文件如果没删除掉,项目其他成员一般不会去处>理. 在日常开发中, 通过webpack 生成的 stats 文件实现了去除多余文件的插件useless-files-webpack-plugin
插件用法如下:
1 | const UselessFile = require('useless-files-webpack-plugin') |
在最近的项目中,返回上一页没有效果,经过好久的排查才发现问题,是路由守卫写法不规范导致。
在项目中用路由守卫做了登录拦截,没登录的跳转到登录页面。页面跳转和拦截都没问题,但是返回上一页就不行了,也没有报错。
代码贴上来
1 | router.beforeEach((to, from, next) => { |
本来以为next()的作用就是下一步跳转页面,后来发现,不能正常返回上一页,就是因为我使用完router.replace()之后,没有再使用next();
next()无论什么情况都是必须写的!!
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true