firefox

2020,6招玩转 Appium 自动化测试

好久不见. 提交于 2020-07-28 03:34:33
Appium是个什么鬼 Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。原生的应用是指用android或ios的sdk编写的应用,移动网页应用是指网页应用,类似于ios中safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。 重要的是Appium是跨平台的,何为跨平台,意思就是可以针对不同的平台用一套api来编写测试用例。 Appium环境搭建 先把一下环境装好备用 打开Appium 应用程序,点击3监测一下环境 红色框框代表iOS测试所需要的,绿色代表安装成功 开战实际项目开发 自动化测试项目搭建 .zip 是.app的压缩文件,当然你也可以直接用XXX.app (xcode编译项目,Products目录下有XXX.app) common 里包含着测试公用的.rb文件 gemfile 所需的gem包 spec 文件包含所有模块的测试rb文件 模拟器运行项目 配置appium APP路径要对 设备模拟器和版本匹配要对 红框内必选(boudleID也可以不写) 配置完点击=> 问号(inspector) 弹出inspector 视图元素检查页面 点击完Record 对于如何编写测试代码,两种方式

SSL证书会过期的原因及后果

…衆ロ難τιáo~ 提交于 2020-07-27 23:10:45
在21世纪,人们越来越注重个人隐私的安全性,近些年爆出越来越多数据泄露的问题,已经慢慢开始对普通大众有明显影响。同时,谷歌、火狐已经对非HTTPS的页面进行警告,目前连国内著名的360浏览器也对未使用HTTPS加密的站点提示不安全。另外,谷歌和百度给予HTTPS页面更高的搜索权重,因此从安全和整个互联网发展来讲,HTTPS对各个类型的网站都非常必要。 相信很多人都知道了SSL证书的重要性,它的作用是验证网站身份,以安全的方式进行信息传递,防止第三方劫持、篡改信息。 但是有人就会问,我的网站已经部署上了SSL证书,是不是就可以高枕无忧了?答案自然是NO。 同一般事物一样,SSL证书也是有一定的期限,是会过期的! 为什么SSL证书会有时间期限呢? 一、从身份验证理解,一开始申请证书的时候会对该网站进行一次身份验证,但是时间一长,网站信息的准确性却难以得到保证,所以SSL证书有期限对验证网站有帮助。 二、所处的安全环境时刻在变,SSL证书到期更换有利于更全面地保护网站安全。 SSL证书过期的后果 最直观的是浏览器会发出安全警告,设想一下当用户打开你的网站结果提示不安全,客户还会继续浏览你的网站吗?最终只会造成用户的流失,同时还影响用户对你网站的信任度。 SSL证书过期意味着你的网站已经没有SSL证书的保护,在一定程度上要承受被盗取网站数据和泄露用户信息的风险。

3点带你快速学会Selenium工具的使用

笑着哭i 提交于 2020-07-27 21:55:48
(一)Selenium IDE Firefox的一个插件,有助于我们理解测试框架。在附加组件里搜索下载,一般搜的结果里前几个都不是,得点那个查看更多才行,找到这个: 安装以后浏览器工具栏会有: 安装好了以后点击这个标签启动: 1:控制用例运行速度 2:暂停和恢复用例执行 3:单步:可以运行一个用例中的一行命令。 先在地址栏输入要录制的url,然后在浏览器进入相应的url,比如我们以百度为例: 第一步:填入url 第二步:火狐浏览器进入百度 第三步: 点击Selenium IDE右侧那个红点,然后去页面点一下搜索框,输入selenium,点一下搜索。然后再点一下selenium IDE的红点,结束录制,这时候可以看到Selenium IDE里已经有记录了: 如果想清空重新录制,可以直接在上图那里鼠标右键,选择Clear All。 第四步: 按上图步骤导出,即可看到Selenium IDE 给你自动生成的unittest用例了。写的看起来很高大上,但是……运行一班都很难成功的,但是我们可以参考它写的结构,这就是标准的结构,我们以后也会这么写。 (二)Selenium Builder 同样是Firefox的一个插件: 启动方式 安装好了以后鼠标右键 点击打开: 如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1085991341,还会有同行一起技术交流。

[敏杰开发]Beta阶段测试报告

断了今生、忘了曾经 提交于 2020-07-27 15:01:22
[敏杰开发]Beta阶段测试报告 这是一篇软工课程博客 项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 作业要求 Beta阶段测试报告 我们在这个课程的目标是 测试项目 这个作业在哪个具体方面帮助我们实现目标 制定测试规则,总结测试结果 关于本组 【 敏杰开发 团队介绍】 关于选题 【 知识路书 项目介绍】 一、测试计划 测试时间 2020年5月29日至2020年6月4日 测试矩阵 矩阵项 平台 PC端或MAC端web浏览器 硬件 PC端或MAC端 浏览器类型 主流web浏览器:Chrome、Safari 测试规划 2020年5月29日 至 2020年6月2日单元测试:前后端分离测试、组件测试、单元测试 2020年6月3日 至 2020年6月4日场景测试:前后端合并、整体测试 Beta版本出口条件 后端api工作正确 前端各组件正常工作 链接跳转正常 无明显错误 发现的已知bug解决完成,无法修复的bug进行记录写入文档 二、测试过程 单元测试 分组 姓名 任务 发现bug bug是否已修复 是否通过测试 前端 ljy 引入tag标签 tag标签与后端对接有误,未正确使用后端api 是 是 - 批量导出bibtex 无 是 - 文献阅读计划:已读 未读 应该有已读、未读、进行中三个状态 是 是 - 面包屑改进crumb+动态路由 层级有误 是 是 - 随笔编辑器 无

还在背面试题?自动化测试与手工测试优、劣势(面试经常问)看看大厂软件测试总监怎么说!

孤街浪徒 提交于 2020-07-27 10:14:52
既然现在有了自动化测试,甚至现在许多团队在使用人工智能的方法,逐渐让机器来取代人的测试。 那么作为测试工程师的人未来会不会消失? 回答这个问题前,先来看一下 自动化测试优势和劣势。 一、自动化测试的优势 1.1 自动化测试可以执行手工测试相当困难或根本做不到的测试 对于软件性能测试中的并发测试、疲劳性测试和强度测试,如果单纯使用人工测试是不可能完成的。 1.2 自动化测试具有一致性和可重复性 在手工测试的时候,往往会出现测试人员在测试时候发现了缺陷,可是由于时间过得太长,或者缺陷报告中操作步骤描述不清楚,或者其他因素,在给开发人员定位问题的时候不能重现。在排除一些偶发性问题的情况下,采用自动化测试可以有效地防止此类问题的发生。 1.3 自动化脚本完全可复用 初期采用录制回放的工具进行自动化测试,比如早起的QTP、基于Firefox的Selenium1插件。最主要的原因是由于这些工具对于一些公用的模块难于复用。比如对于登录才可以使用的功能每次开始的时候都要执行登录操作,测试完毕为了让其他测试用例可以继续执行必须执行登出操作。由于早期的工具不具有复用性,相同的操作集中在各个不同的地方,这给软件测试脚本的维护带来的麻烦,而现在的自动化测试脚本均采用类似JAVA、Python这些面向对象的语言来完成,代码的复用发生了很大的改善。 1.4 自动化测试使软件更有信任度

Element UI 中 dialog 可拖拽

时间秒杀一切 提交于 2020-07-27 08:27:14
1.utils文件夹下创建dialog.js文件 1 import Vue from 'vue' 2 3 // v-dialogDrag: 弹窗拖拽 4 Vue.directive('dialogDrag' , { 5 bind(el, binding, vnode, oldVnode) { 6 const dialogHeaderEl = el.querySelector('.el-dialog__header' ) 7 const dragDom = el.querySelector('.el-dialog' ) 8 dialogHeaderEl.style.cursor = 'move' 9 10 // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null); 11 const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null ) 12 13 dialogHeaderEl.onmousedown = (e) => { 14 // 鼠标按下,计算当前元素距离可视区的距离 15 const disX = e.clientX - dialogHeaderEl.offsetLeft 16 const disY =

javascript高级程序设计---有关DOM的内容总结

怎甘沉沦 提交于 2020-07-27 06:05:44
DOM 10.1 节点层次 文档元素是文档最外面的元素,文档中其他所有元素都包含再文档元素中,再HTML中文档元素始终是元素 10.1.1 Node类型 ①节点属性 nodeName :元素的标签名 nodeValue : 元素的值始终为NULL. ②节点关系 childNodes: 其中保存着一个NodeList对象,可以通过方括号和Item()来通过位置访问这些子节点。有length属性,但它并不是Array的实例。 parentNode: 指向父节点。包含在childNodes列表中的所有节点都具有相同的父节点。 previousSibling 和nextSibling属性,可以访问同一列表中的其他节点。 firstChild lastChild 指向节点 hasChildNodes 在节点包含一个或多个子节点的情况下返回true ③操作节点 appendChild()插入在父节点的最后一个节点 insertBefore(newCode,**)someNode.firstChild)插入某个节点 *的前面\ replaceChild(newNode,someNode.firstChild) removeChild(someNode.firstChild)移除的节点 cloneNode(),用于创建调用这个方法的节点的一个完全相同的副本,参数false/true可以选择深浅复制

html+css面试合集

南楼画角 提交于 2020-07-27 04:19:48
1 介绍一下标准的 CSS 的盒子模型?与低版本 IE 的盒子模 型有什么不同的?   标准盒子模型:宽度=内容的宽度(content)+ border + padding + margin   低版本 IE 盒子模型:宽度=内容宽度 (content+border+padding)+ margin 2 box-sizing 属性?   用来控制元素的盒子模型的解析模式,默认为 content-box context-box:   W3C 的标准盒子模型,设置元素的 height/width 属性指的是 content 部分的高/宽 border-box:   IE 传统盒子模型。设置元素的 height/width 属性指的是 border + padding + content 部分的高/宽 3 CSS 选择器有哪些?哪些属性可以继承?   CSS 选择符:id 选择器(#myid)、类选择器(.myclassname)、 标签选择器(div, h1, p)、相邻选择器(h1 + p)、子选择器 (ul > li)、后代选择器(li a)、通配符选择器(*)、属 性选择器(a[rel="external"])、伪类选择器(a:hover, li:nth-child)   可继承的属性:font-size, font-family, color   不可继承的样式:border,

深入理解CSS盒子模型

☆樱花仙子☆ 提交于 2020-07-27 04:08:58
原文: 深入理解CSS盒子模型 盒模型 盒模型是CSS的基石之一,它指定元素如何显示以及(在某种程度上)如何交互。页面上每一个元素都被看做一个矩形框,框由元素的内容,内边距 (padding),边框 (border)和外边距 (margin)组成,如下图所示。 内边距出现在内容区域周围,若给元素上添加背景, 背景将会应用于由内容和内边距组成的区域 。添加边框,会在内边距的区域外加一条线,这些线有多种样式,后面会有所介绍。在边框外边是外边距, 外边距是透明的,一般使用它控制元素之间的间隔 。 CSS2.1还包含outline属性,绘制在元素框之上,不影响元素的大小或定位。大多数现代浏览器(包括IE8)都支持outline,但IE7和更低版本不支持。 内边距、边框、外边距都是可选的,默认值为零。但许多元素将由用户代理样式表设置外边距和内边距,所以将元素的margin和padding设置为零,对写整个样式有帮助,这项工作一般由全局reset进行。 1. IE和盒模型 IE的早期版本,包括IE6 ,在混杂模式中使用自己的非标准盒模型。浏 览器的width属性不是内容的宽度,而是内容,内边距和边框的总和 。添加的内边距越多,给内容预留的空间就越少。 在CSS3中,可通过box-sizing属性定义使用哪种盒模型,但除了一些非常特殊的场合很少使用该属性。 目前最好的解决方案是回避这个问题

浏览器兼容性问题汇总

孤人 提交于 2020-07-27 04:00:51
1 IE 浏览器不支持事件和方法的解决方案: 1.1 trim() String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g, ""); } String.prototype.ltrim=function(){ return this.replace(/(^\s*)/g,""); } String.prototype.rtrim=function(){ return this.replace(/(\s*$)/g,""); } 1.2 startsWith() String.prototype.startWith = function(str){ if(str==null||str==""||this.length==0||str.length>this.length) return false; if(this.substr(0,str.length)==str) return true; else return false; return true; } String.prototype.startWith = function(str) { var reg = new RegExp("^" + str); return reg.test(this); } String.prototype