有时候在交流群里经常会看到这样的问题,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. HAXM 6.0.5显示不兼容Windows

    HAXM 6.0.5显示不兼容Windows 最近更新Android后,用户会在Android Manager中发现,以前可以安装Intel x86模拟器现在不能安装了.提示错误信息如下:intel  ...

  2. Xamarin.Forms XAML控件的公共属性

    Xamarin.Forms XAML控件的公共属性   Xamarin.Forms XAML控件有很多.通过官网API,可以查看每个控件的属性.但是官网只给出了控件的特有属性,而公共属性没有列出.所以 ...

  3. SnakeYaml使用

    新的项目中需要将yaml文件解析为对象,调研了决定使用snakeYaml,下面看一看怎么使用. 一.引入依赖 因为项目是使用maven构建的,所以我们在pom文件中引入snakeYaml的依赖,如下: ...

  4. U-net图像分割

    [Keras]基于SegNet和U-Net的遥感图像语义分割 2014 年,加州大学伯克利分校的 Long 等人提出全卷积网络(FCN),这使得卷积神经网络无需全连接层即可进行密集的像素预测,CNN ...

  5. DVBS/S2在数字电视系统中的应用 三 (LNB介绍)

    DVBS/S2在数字电视系统中的应用 三 (LNB介绍) 老谢在前面两篇文章中(例如以下).都有提到LNB这一概念. DVBS/S2在数字电视系统中的应用 一 (DVBS/S2接收系统Block Di ...

  6. Ubuntu 安装 spark

    环境: Unbunt 12.04 Hadoop 2.2.x Sprak 0.9 Scala scala-2.9.0.final.tgz 步骤 1. 下载 scala 2. 解压scala,然后改动/e ...

  7. vu 是什么

    unsigned char 是无符号字符型 volatile      易变,易失的 volatile  unsigned char i; 意思是定义一个无符号字符型的变量 i. 这个变量存放在内存中 ...

  8. Chrome内核保存为mhtml(单网页)

    在地址栏输入:chrome://flags  回车 然后Ctrl+f查找mhtml Tips: 如果网页图片看不太清可以CTRL+鼠标滚轮放大网页 如果系统原因以及其它因素可以下载:QQ浏览器(默认保 ...

  9. byte 单位换算

    1G就1GB啦,平时人们说1G只是简洁来说而已. bit(位).B(字节).K(千).M(兆).G(吉咖).T(太拉) B(Byte).KB(KiloByte).MB(MegaByte).GB(Gig ...

  10. Android--绑定服务调用服务的方法

    Service依照其启动的方式,可分为两种: 1.Started Started的Service.通过在Application里用startService(Intent intent)方法来启动.这样 ...