有时候在交流群里经常会看到这样的问题,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. 如何保存gnome的linux的 会话?相当于windows下的休眠?

    在关机前, 你进行的所有操作, 的集合, 就叫做你跟 linux系统 机器间的 一次 会话, 一个session. linux 可以 在关机时保存 这些session, 保存这些打开的窗口 和程序. ...

  2. 3.0、Spring-注入

    一.Spring的基本介绍:Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建.简单来说,Spring是一个分层的JavaSE/ ...

  3. sqlserver事务加锁机制

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏 ...

  4. SQL Server触发器

    一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发 ...

  5. CSS Sprites优缺点

    利用CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这也是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因: CSS Sprites能减少图片的字节, ...

  6. JS学习:第二周——NO.3盒子模型

    1.CSS盒子模型包括四个部分组成:设定的宽高+padding+border+margin: 2.JS盒子模型:通过系统提供的属性和方法,来获取当前元素的样式值   JS提供的属性和方法: clien ...

  7. Eclipse的快捷键

    Ctrl+Shift+L调出eclipse的所有快捷键 不定期更新2016#8#19 如何配置快捷键:windown-preferences-General-key 一些操作  Ctrl+D   删除 ...

  8. window.top.location.href 和 window.location.href 的区别

    "window.location.href"."location.href"是本页面跳转. "parent.location.href" 是 ...

  9. 左右手坐标系转换时R和T的具体形式分析

    本文介绍了在计算机视觉的一些应用中,左手坐标系和右手坐标系之间转换时,旋转矩阵R和平移向量T的具体表达形式有哪些变化.

  10. 【Tomcat】配置Tomcat

    写这篇博文的原因:因为发布Maven项目的时候,始终无法访问.所以顺便重新配置了Tomcat. 1.首先到官网下载一个Tomcat7版本的zip包,解压后,放入C盘(根据个人需求放置). 2.修改co ...