有时候在交流群里经常会看到这样的问题,selenium能进行性能测试吗?selenium1和selenium2有什么区别等等问题,在这里谈一下自己学习和工作以后对selenium的认识。我所记录的东西都是自己学习和工作中实际学习用到的,不会为了写博客而去搜文字什么的,通俗易懂。

selenium是什么?在我看来它是个封装起来的API,提供给你各种各样的方法去对web页面进行操作,它是一个自动化测试框架,它能做的就是把你从页面上的操作转化为代码,你能在页面上做什么,就能用selenium提供的接口方法去操作web页面。

selenium1包括 seleniumIDE  seleniumRC seleniumGrid ,放张selenium1组成图

1.  seleniumIDE是火狐浏览器的一个插件,可以录制下在浏览器上进行的操作,然后可以导出一个各种开发语言的脚本,还可以回放录制的操作等等。

2.  seleniumRC是selenium1的核心部分,可以利用seleniumRC编写自动化测试脚本,然后通过seleniumRC的服务器作为代理服务器去访问应用。

3.  seleniumGrid是可以支持在多台机器上不同浏览器不同操作系统测试环境中进行测试,通过一个主机控制并行的执行测试用例。

虽然selenium1已经不怎么用了,但是学习使用一个东西该了解的也要了解,不能简单的会用就行了。态度决定一切。selenium3早就出来了,我还没学习和研究,先说下selenium2吧,selenium2简单来说是selenium1+WebDriver,更为准确的说应该是seleniumRC+webdriver,selenium2的主要特性就是将webdriverAPI集成进seleniumRC当中。

那么seleniumRC和webdriver的区别又是什么呢?有的小伙伴面试的时候遇到了这个问题,webdriver是利用浏览器原生的API,直接操作页面里的元素甚至是浏览器本身,例如最大化呀,控制浏览器的前进后退,截屏啊,设置插件等等等等,这样就可以更快速的操作页面元素。seleniumRC则是将操作web元素的API调用转化为一段段javascript,在selenium内核启动浏览器后将javascript注入,通过javascript来调用操作页面元素,这样进行页面操作的速度和质量是不稳定的,因为这要依赖于selenium内核对翻译成的javascript的质量的高低。上图中的core就是代表了一段段javascript代码。

----------------------------------------------------------关于selenium的其它问题--------------------------------------------

问题一:我怎么用selenium测试浏览器的兼容性啊,selenium可以做性能测试吗?

答:总结来说就是不知道selenium是做什么的。selenium是一个测试框架,是做web自动化测试的,从selenium衍生出的appium可以做移动端的自动化测试。它是可以自动化的执行一些操作,但是如果用selenium来做性能是很差很差的。自动化测试主要是自动化执行页面操作,完成一个个测试案例,如果要测试浏览器的兼容性,本质上跟selenium是没有半毛钱关系的。当然也可以将案例在不同浏览器上单独跑来看下兼容,但是测试结果一般着重显示的是整个业务逻辑流程的通过与否,与测试浏览器兼容性关联不大。

问题二:我怎么用selenium进行反向测试,异常场景测试啊

答:自动化测试是为了减少手工测试的重复劳动,但并不是可以完全取代手工测试,所以自动化测试一般用于回归测试和冒烟测试,例如:产品上线前将一些基本的业务用自动化跑一遍,确保没有问题;开发修改了一个业务流程中的某个地方,我们单独测试完修改的模块,用自动化测试做个回归测试,确保这个修改的功能模块没有问题,对涉及到这个功能模块的业务都没有问题,或者可以直接用自动化进行测试。从这我们可以看到自动化测试针对的是正向流程的测试。我们在进行自动化测试的时候要考虑到脚本的开发与维护,如果一个异常场景手工测试几分钟就可以了,但是写脚本为了生成不同场景,并且判断所产生的测试结果等等可能要付出的时间等成本要更高。更重要的一点,这些异常场景一般是不会重复测试的,这就没法保证测试脚本的重复使用,造成浪费。

那么我们可以总结出要写自动化测试脚本的时候应该考虑哪些东西:

1.测试脚本的复杂程度。脚本的复杂程度,亦或者说是业务测试的复杂程度,再或者是测试案例设计的复杂程度,它们决定了脚本开发的难度,脚本开发的成本,脚本维护的成本,如果这个成本远远高于手工测试,那么自动化测试的意义何在?

2.测试脚本的重复利用。如果一个脚本写出来就为了测试一个功能,比如登陆密码的校验,我们辛辛苦苦写出各种场景的密码校验,测试完成后难道每次登陆都要测试密码的不同种输入等等异常状况吗?一定要保证写出的脚本可以重复利用。

当然这只是决定了要开始做自动化测试写脚本的时候要考虑的,在开始进行自动化测试之前我们还需要对整个项目进行评估,看它是否需要,是否适合进行自动化测试。这些东西网上一搜一大堆,就不在这里赘述了。以上都是平时自己遇到的,还有交流群里见到的各种各样的问题的我自己一些见解,不对的地方还请指正批评。

selenium使用笔记(一)的更多相关文章

  1. selenium课程笔记

    selenium课程笔记第一天(2017-7-1) 一.配置火狐浏览器 运行:firefox.exe -p -no -remote selenium课程笔记第二天 用Eclipse+java+sele ...

  2. java selenium 自动化笔记-不是0基础,至少有java基础

    本来今天要学GitHub的,但是在群里问了下小伙伴时被暴击.说我学的东西太多太杂,不是很深入,都是皮毛.哎~自己早深有意识到,因个人能力吧,找的资料都不是很全,加上实际工作没有应用到.所以写一篇sel ...

  3. 潭州课堂25班:Ph201805201 爬虫基础 第八课 selenium (课堂笔记)

    Selenium笔记(1)安装和简单使用 简介 Selenium是一个用于Web应用程序测试的工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, ...

  4. selenium使用笔记(三)——元素定位

    selenium进行自动化测试的一个很重要的东西那就是元素定位,如果元素都没法定位就无法操作它,也就无法进行自动化测试了.网上对于元素定位有很多的介绍,很详细很详细的,但是依然有很多新手总是会遇到无法 ...

  5. Selenium学习笔记之外部化相关测试数据---xml

    我们也可以用xml来定义一个信息更为丰富的UIMap.xml文件,比如,额外还添加控件所属的页,控件的类型,然后解析构建一个XMLParser类来读取相应的值. <?xml version=&q ...

  6. selenium 使用笔记

    下面一段代码是使用selenium访问网页一个小实例 #!/usr/bin/python# -*- coding: utf-8 -*- '''Created on Dec 6, 2013 @autho ...

  7. selenium+python笔记11

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: search in mail box "&qu ...

  8. selenium+python笔记10

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ 我们多添加一些测试场景,比如:删除邮件,查找邮件,发送邮件等等 &qu ...

  9. selenium+python笔记9

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: delete mail 我们多添加一些测试场景,比如:删 ...

随机推荐

  1. js拖拽效果实现

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. [Linux] Linux常用文本操作命令整理

    简单的总结一下常用的一些实用的Linux文本操作命令,包括wc(统计).cut(切分).sort(排序).uniq(去重).grep(查找).sed(替换.插入.删除).awk(文本分析). 1.统计 ...

  3. DOM0,DOM2,DOM3 事件基础知识

    事件是javascript和HTML交互基础, 任何文档或者浏览器窗口发生的交互, 都要通过绑定事件进行交互; 事件有DOM0, DOM2和DOM3的区分(别问我怎么少了一个DOM1, 也没找到DOM ...

  4. Fedora下依赖库的解决

    转载于http://blog.sina.com.cn/s/blog_6f74890d0101dpp4.html x86_64版本的fedora中打开共享对象文件失败的解决小技巧———以qq for l ...

  5. virut详细分析

    Virut分析 0x00.综合描述 virut样本的执行过程大体可以分为六步:第一步,解密数据代码,并调用解密后的代码:第二步,通过互斥体判断系统环境,解密病毒代码并执行:第三步,创建内存映射文件,执 ...

  6. 微信的audio无法自动播放的问题

    一.问题 最近做了一个html5的项目,里面涉及到音乐播放,项目要求音乐进入页面就自动播放,于是我就想到了html5的audio标签,将mp3引入进去. 1.在audio标签里引入了autoplay属 ...

  7. 51Nod 算法马拉松21(迎新年)

    这次打算法马拉松是在星期五的晚上,发挥还算正常(废话,剩下的题都不会= =). 讲讲比赛经过吧. 8:00准时发题,拿到之后第一时间开始读. A配对,看上去像是二分图最大权匹配,一看范围吓傻了,先跳过 ...

  8. Qt 程序打包发布

    Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,Qt 官方开发环境里自带了一个工具:windeployqt.exe.在Qt安装目录如:C:\Qt\Qt5.7. ...

  9. css3中变形函数(同样是对元素来说的)和元素通过改变自身属性达到动画效果

    /*对元素进行改变(移动.变形.伸缩.扭曲)*/ .wrapper{ margin:100px 100px auto auto; width:300px; height:200px; border:2 ...

  10. UILabel 的一个蛋疼问题

    一.问题描述 在iOS8以下版本,numberOfLines设置为0,编译警告Automatic Preferred Max Layout Width before iOS8.0,同时不能换行. 二. ...