想不想用一个代码来解放双手(Python自动化)selenium

Python日志

共 3005字,需浏览 7分钟

 · 2021-03-26

关注我们,设置标星

下午好啊

又到了见面的时候啦

土豆本期来跟大家分享一个关于解放双手的

python的自动化

有没有很期待

Selenium



简介

Selenium是ThoughtWorks员工在业余时间开发并维护的开源项目,并且在ThoughtWorks的项目中被广泛应用。简单地说,Selenium是一个自动化的web应用功能测试工具。


我们稍微八卦一下,Selenium有趣的是它名字的来历:在Selenium出现之前,当时最著名的web应用功能测试工具Mercury Quanlity Center,但那是一个商业工具,功能强大却也价格不菲,常常让开发者们又爱又恨。所以,自己动手开发开源功能测试工具的ThoughtWorker们把这个工具叫做Selenium——“mercury”有“水银”的意思


而“selenium”(硒元素)恰好是专解汞中毒的特效药。



八卦到此,转入正题,Selenium的主要特点是其开源性、跨平台性以及众多的编程语言支持,你可以用html编写测试用例,也可以用python、java、php甚至Linux shell来编写测试用例。
如此多的特性,使Selenium最近几年成为越来越多QA的Web应用功能测试的首选自动化测试工具。




我们先来了解下Selenium的框架与原理

Selenium分为Core与RC(Remote Control)两个部分,其中Core是基础的,直接在HTML Table里编写测试代码的模块,而Remote Control则支持用Java等语言编写测试用例。

最近,Selenium又推出了新的Remote Grid, 支持多任务并发,可以看成是多个RC的集合。同时,Selenium也提供了一个脚本录制器Selenium-IDE,该录制器是一个基于Firefox的插件。而无论Core模式,还是RC模式,其最终都是通过Java Script来实现对页面元素的控制,它提供了丰富的指定Html页面元素和操作页面元素的方法。


Selenium Core/Selenium IDE


Selenium Core是Selenium的核心部分,它由一些纯js代码组成, 可以运行在windows/linux的不同browser上, 而IDE是在core的基础上的一种应用, 通过UI实现类似QTP/Winner的脚本录制回放功能。



一、Core的运行模式主要有:


1. Selenium IDE 运行

利用IDE插件加载core引擎,运行测试脚本。主要用于脚本录制调试,类似于开发工具的调试,一般不应用于测试


2. 部署于被测对象服务器上,以http方式运行

将core核心引擎和测试代码部署与被测对象的Web服务器上,以http请求的方式运行。


3. 本地模式HTA and Chrome

HTA模式是在IE下运行,Chrome是在Firefox下运行。这个两个的原理都是利用浏览器的本地化模式,调用主html文件--Test Runner 加载核心引擎库,执行test suite里的测试用例。



二、Selenium Core的一些核心js引擎文件:

selenium-api.js :Selenium的主API库

selenium-browserbot.js :Selenium的主函数库,命令的具体方法都在该库中。


selenium-browserdetect.js : 浏览器版本检测库

selenium-logging.js : 记录日志库


user-extensions.js : 用来扩展selenium的文件;

用户自己编写的函数和扩展的命令都应该放在这个文件中。当然,你也可以放在其他地方。


xmlextras.js : 第三方JavaScript库。主要用于DHTML及XML的解析。



三、Selenium IDE说明:

  Selenium IDE是通过监听用户对html页面的操作来录制脚本的,是真正能够监听用户对html页面的操作的录制工具。Selenium IDE可以生成7种语言的脚本:

html,java,C#,ruby,python,perl,php。


  你可以直接在FireFox中将Selenium IDE打开,执行html格式的脚本。 


  如果你要执行其他语言格式的Selenium脚本,那么,你需要使用Selenium服务器,使用RC模式。6种语言的使用方法都是一样的。



Selenium RC

Selenium RC模式,是客户端利用各种编程语言,通过网络向Selenium Server发送指令,Selenium Server接收到测试指令后,启动浏览器并向其发出JavaScript调用实现对Html页面的全面追踪,并通过网络把执行结果返回给调用者。


Selenium Server的实现原理是其打开浏览器时,把自己的JavaScript文件嵌入网页中。然后Selenium的网页通过frame嵌入目标网页。这样,就可以使用Selenium的JavaScript对象来控制目标网页。


Selenium客户端一般使用单元测试技术实现,通过判断返回的结果与预期是否一致来决定程序是否运行正确。



Selenium Grid

Selenium Grid是在Selenium RC的基础上,为了解决RC模式不能并发调用的问题而推出的一种解决方案。可以实现多环境,同时测试的需求。其具体原理如下:


客户端利用各种编程语言,并发的方式,通过网络向Selenium Grid发送指令,Selenium Grid接收到测试指令后,根据不同的并发指令,启动对应多个的Selenium Server。然后Grid把指令发送给对应Server,每个Server的处理原理与RC相同。


由上面原理,可以看出,Grid 只是提供运行脚本的环境,无法决定脚本以什么样的形式去跑(并行的方式,或者多环境的方式)。脚本以什么样的形式跑,由脚本本身和脚本的runner (一般用junit或者TestNG)的配置所决定.



几个概念


操作(action)和断言(assertion) 


操作(action):操作模拟用户与Web应用程序的交互。例如,单击一个按钮和填写一个表单,这些都是常见的用户操作,可以用Selenium命令来自动化这些操作。


断言(assertion):断言验证一个命令的预期结果。常见的断言包括验证页面内容或当前位置是否正确。在Selenium网站上可以找到可用命令的完整列表。通过Selenium命令,脚本编写者可以描述browser bot在浏览器中所执行的操作


Test Suite和Test Case:

Test Suite: 一组测试的集合,在实际中往往一个模块对应一个Test Suite,在Seleium中显示在左上角。


Test Case:一个测试用例,包含多个action 或者断言。






支持中国棉花


好啦,本期的内容就先到这里啦

我们下期再见





关注我们

Python日志

一个正经搞知识的公众号




部分内容来自网络


浏览 47
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报