有时候在交流群里经常会看到这样的问题,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使用笔记(一)——selenium你该知道的的更多相关文章

  1. selenium学习笔记(selenium IDE下载安装)

    今天自己一直在瞎捣鼓 最后这里整理下 selenium IDE 这个录制工具的下载安装 首先这个工具只支持火狐浏览器firefox.使用火狐浏览器进入selenium官网: http://www.se ...

  2. selenium学习笔记(selenium下载安装)

    博主自己捣鼓的接口框架先到这里 等工作上正式开始使用再后续完善需求 还是继续学习python.学编程就直接动手写 就想看看python+selenium的组合 什么都不多说.先下载安装 博主这里已经安 ...

  3. selenium课程笔记

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

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

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

  5. 笔记-爬虫-selenium常用方法

    笔记-爬虫-selenium常用方法 1.      查找元素 常用的查找方法 find_element_by_name find_element_by_xpath find_element_by_l ...

  6. PYTHON 爬虫笔记七:Selenium库基础用法

    知识点一:Selenium库详解及其基本使用 什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium ...

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

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

  8. selenium 使用笔记

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

  9. selenium+python笔记11

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

  10. selenium+python笔记6

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 将登陆动作封装成function "" ...

随机推荐

  1. luogu P3808 【模板】AC自动机(简单版)

    题目背景 这是一道简单的AC自动机模板题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保证正确的基础上只有两组数据,请不要恶意提交. 管理员提示:本题数据内有重复的单词,且重复单词应该计算多次, ...

  2. java并发之hashmap

    在Java开发中经常会使用到hashmap,对于hashmap又了解多少,经常听到的一句话是hashmap是线程不安全的,那为什么是线程不安全的,如何才能保证线程安全,JDK又给我们提供了那些线程安全 ...

  3. 动态加载/删除css文件以及图片预加载

    动态加载/删除css文件以及图片预加载   功能模块页面   最近,工作中遇到了一个比较奇葩的需求:要在一个页面(PC端)增加一个功能模块,但是这个页面在不久之后要重构,为了新增加的模块可以继续复用, ...

  4. php 的$_POST 和$_REQUEST的区别

    发现$_POST 没数据,而$_REQUEST 有数据 ----------------------------------------- https://stackoverflow.com/ques ...

  5. scala使用FunSpec进行单元测试报错

    遇到比较奇怪的问题,mvn项目中的main函数可以正常运行,但是test阶段出错,报错信息如下: Exception in thread "main" java.lang.NoCl ...

  6. (一)MVVMLight安装

    http://www.cnblogs.com/manupstairs/p/4890300.html 1.首先新建一个wpf项目 2. 安装完成即可在我们的项目中看到如下引用: 如果点击安装的时候出现: ...

  7. JSON和JSONP 傻傻分不清楚?

    什么是JSON  前面简单说了一下,JSON是一种基于文本的数据交换方式,或者叫做数据描述格式,你是否该选用他首先肯定要关注它所拥有的优点. JSON的优点: 1.基于纯文本,跨平台传递极其简单: 2 ...

  8. caffe2--ubuntu16.04--14.04--install

    Install Welcome to Caffe2! Get started with deep learning today by following the step by step guide ...

  9. ThinkPHP5 安装自定义模块

    安装官方给的demo,在build.php文件中 <?php // +-------------------------------------------------------------- ...

  10. JavaScript删除确认框

    1〉 <a href="javascript:if(confirm('确实要删除吗?'))location='jb51.php?id='">删除</a>