0


目前最主流的自动化测试技术selenium

前言(conda基础命令)

conda info --envs :查看当前所有的虚拟环境
conda list :查看当前虚拟环境安装的包
conda remove -n selenium --all :删除虚拟环境
conda create -n selenium python=3.7 :创建虚拟环境
conda activate selenium :激活环境
conda deactivate :退出环境

1、Selenium是什么?

**Selenium测试

直接运行在浏览器中

,就像真正的用户在操作一样。**

Selenium经历了三个大的版本。
主流的自动化测试工具是

QTP

,现在已经淘汰。2014年左右selenium开始兴起。
**自动化

功能测试

主要是用于提升测试人员工作效率**,70%的工作时间都是在进行UI测试。全部都是

基于前端界面来实现的交互性操作

。尽可能实现前端的交互,用于

模拟用户的实际行为

。推出了基于JScore的selenium1.0版本。
Selenium ide,已经被淘汰。用于录制Firefox浏览器下的web系统脚本。
Selenium2.0 webDriver+IDE。已经被淘汰。
Selenium3.0 webDriver的时代
APP自动化是基于Appium来实现的。Appium是selenium孩子
**Selenium是目前最主流的

自动化测试技术

,因为

跨平台

开源

。**
跨平台:python,Java,js,c#,PHP等语言的使用。

2、selenium应用场景(

自动化功能测试

应用场景)

(1)web UI——selenium主要实现

web UI自动化测试


**一般 UI 自动化都是在

回归测试

阶段**来进行的。主要用于

验证流程

的正确性,

特定功能

的正确性。
(2)APP UI
(3)接口自动化

3、RobotFramework环境部署

RobotFramework

简称RF

,是**目前

市面应用

相对比较主流的

一个测试框架

**,

全部基于Python实现

的一款

开源跨平台的测试框架


支持

OS与windows系统

的运行。
支持

WebUI、APPUI、接口

的自动化测试(基于不同的模块来实现不同的业务)。
目前而言

仅有的一个具备有GUI界面的框架


RF不需要懂python编程就可以操作。具备有独有的

表格编程格式

环境搭建:
1.安装python。——支持最高版本python3.7?
2.安装RF组件:

pip install robotframework

pip install robotframework-ride

在这里插入图片描述
3.启动方式:在python37/Scripts/

ride.py

启动。——选择python.exe的方式打开(启动)
在这里插入图片描述
4.安装自动化测试相关组件:

pip install robotframework-seleniumlibrary

5.下载webdriver到python的安装路径下。
PS:如果安装时出现read timeout异常,就添加

--default-timeout=1000

一、web自动化测试

1、自动化基础
测试流程,从手工转换为自动化实现形式。
自动化在实际执行的时候,不会考虑整个流程是否流畅,只会依照原有的动作进行

机械化执行

2、目前主流的自动化实现
基于selenium+web Driver来实现的。

3、环境搭建——基于python的selenium实现
(1)安装python
(2)安装Pycharm
(3)安装Selenium+WebDriver

pip直接安装Selenium

WebDriver的安装:

例如安装chromDriver,首先直接百度chromDriver,点击

chromDriver Mirror

会得到所有chromDriver版本。

根据

自己的chrom

浏览器版本

下载对应的chromDriver。
如果没有对应的chromDriver版本,就随便点击一个chromDriver版本(比如2.46版本的),得到其中的

notes.txt

,根据其中的所支持浏览器版本找到对应的chromDriver版本。然后下载chromDriver。
下载完成后,会得到

chromDriver.exe

文件,将其放到python安装的根目录下。
在这里插入图片描述
在这里插入图片描述
4、应用实列
(1)导环境:工程项目点击File下的Settings,点击里面的Project的Project Interpreter进行配置。
在这里插入图片描述
(2)建包(New->Python Package)、建python文件(New->Python File)

5、场景
(1)面试自动化测试岗位,一定会问及的内容:

测试框架的设计


(2)学习自动化的目的:设计一款独属于自己的测试框架。现阶段测试框架的核心内容一定是

基于关键字驱动

的。
1、解决代码冗余
2、解决可读性
3、解决维护性
4、解决代码的复用性
最根本的解决方式:关键字驱动(selenium的二次封装)
——关键字驱动最大的劣势:没有办法结合到一个系统完全100%的契合一个系统的自动化测试。只能做

通用性

的项目自动化,类似于研发一个iframe工具,只能对一个系统进行泛泛的自动化测试,没有办法做精。
——PO模式

完全契合一个系统

,本身的业务和实际存在的流程来进行自动化测试的设计和管理。100%契合。

6、数据驱动
**将

代码与数据进行分离

**,单纯

由数据组成文件

,再

由文件来驱动关键字

,最终实现整个自动化的流程。
**在unittest中,通过

ddt

来实现**。ddt全称叫做

data driver test

,安装ddt通过

pip install ddt


**可以直接读取

yaml文件

**。通过

pip install pyyaml

安装。
**

xlrd模块

——excel读取(.xlsx文件)**

7、关键字驱动
(1)当调用一个特定的关键词的时候,就可以执行一个操作?
(2)关键字驱动已经非常大程度降低了冗余,提高了代码的可阅读性。

8、关键字驱动+数据驱动形式下实现的自动化测试框架的设计模式:
读取到数据,**基于固定格式的数据内容进行

拼接

,拼接后的内容作为关键字所需要的参数**,进行传入。从而执行对应的关键字。再将结果与预期结果进行对比,从而获得单条测试用例执行是否通过的结果。

9、UnitTest
Python安装时就已经默认封装好了UnitTest框架,调用框架的时候只需要通过直接导入

(import)unittest

包即可实现;
主要用于

管理测试用例

实现数据驱动


UnitTest的基本用法:
Python中相对比较流行的自动化测试框架

UnitTest,PyUnit

,在Java中有一个叫做

JUnit

的测试框架,早期主要是用于做单元测试,随着自动化更新,能够完整的结合Selenium、Appium、Requests等实现UI自动化与接口自动化。
四大特点:
1、TestCase:测试用例,所有的用例都是

直接继承于unittest.TestCase类


2、TestFixture:

setUp

Teardown

,作为前置条件和后置条件。
3、TestSuite:测试套件。
4、TestRunner:测试运行器。一般与TestSuite一起使用。
5、断言(assert):在UnitTest中封装好了成熟断言,可以直接被调用。断言:自动化测试主要用于

对流程来进行的测试

断言就是自动化测试中的预期结果与实际结果的对比,其本身就是if else


在这里插入图片描述
UnitTest语法规则:
1、UnitTest中,测试用例定义都是

以test开头

2、用例排序

与写的顺序无关

,排序是遵循A-Z,a-z,0-9
在这里插入图片描述
注意执行顺序!1-9,a-z。
Skip操作:
跳过测试用例的执行,是通过

装饰器

来执行的。

# 无条件跳过本条用例的执行
@unittest.skip('因为我比较帅,所以不想执行')# 有条件跳过本条用例执行1 =false
@unittest.skipUnless(1>2,'这是unless的理由')# 有条件跳过本条用例执行2 = true
@unittest.skipIf(1<2,'这是if的理由')

@unittest.expectedFailure # 不记录用例失败当中

以上三种都会跳过本次用例的执行!
UnitTest套件:

必须新建一个类对象存放套件

直接在unittest类中运行无法生效


HTMLTestRunner:
参考地址:https://www.jb51.net/article/194926.htm。
(1)导入环境:下载HTMLTestRunner.py,注意右击另存为python中的Lib文件夹中(eg.Anaconda3\envs\selenium\Lib)。修改部分源码,应用于python3中。
(2)导包:直接import即可。

from HTMLTestRunner import HTMLTestRunner

10、基于UnitTest+关键字驱动实现自动化测试
(1)UnitTest是python中的测试专用的一个框架,初期是用于做单元测试,是随系统默认集成的框架,不需要额外安装。
(2)UnitTest在使用的时候,有明确的规范定义,setUP,tearDown,testCase,前两个在unittest中默认有,但需要自己声明。

11、quit和close的区别
quit:关闭浏览器,并且关闭ChromeDriver进程。
close:关闭当前的标签页,不会关闭进程。

课后作业:基于所讲,将常用关键字进行封装,并基于UnitTest来实现一个基本的自动化测试流程。

12、PageObject模式(PO模式)
是目前测试行业公认

最佳的自动化模式

,取自关键字驱动模式来做的一次升级(selenium二次封装)。是完全基于页面来实现的模型。
PageObject,从最初自动化是基于QTP来实现的,通过录制的形式,自动生成脚本,通过定义对象库来实现对页面的元素的收集,升级到关键字驱动的形式来实现自动化(通过封装对元素的操作,来实现关键字驱动),再升级到pageObject,将系统以页面来进行区分,针对不同的页面,基于页面的元素及当前页面所实现的业务,将其定义为一个完整的页面对象。然后对这个页面对象进行操作。在PO中,通过分层的形式,来定义出不同页面的操作内容:
1、BasePage:

基础层

,用于提供

最为底层的功能

,让

其他页面对象可以直接进行继承

的。
2、page:

页面层

,用于提供

元素的获取

,各个元素的操作方法的封装。
3、

业务层

:通过这一层的调用,

传入参数

,进行自动化的运行。
优点:针对于

指定的被测业务系统

的流程,执行自动化时非常

简便


缺点:对于

多个系统的复用性

相对较

13、PO设计原理
(1)

提取

selenium中

公用的方法

,作

为基本对象


(2)

页面业务流程的关联设计


(3)

调用业务流程

实现自动化测试。
优势:
(1)将不同的页面封装成不同的页面对象,分别进行管理;
(2)进一步降低冗余;
(3)对于代码的阅读性和维护性有进一步提升。例如:在维护的时候,如果元素或者文本内容发生变化,只需要修改一处即可全部生效;
(4)测开针对公司的系统,结合需求与业务,结合实际项目情况,设计对应的测试框架与测试工具,提供给测试人员进行功率提升,并且进行维护。

14、PO的实现是如何来做的?
注:*表示基于

元组的形式

进行处理,**表示字典,基于

键值对的形式

去获取。

15、自动化测试目的
对系统中

存有的流程

进行

回归

自动执行

16、在面试时,自动化测试技术的相关点的内容
(1)自动化测试相关的设计模式以及应用的技术点。
为什么不知道如何回答面试官有关自动化测试技术的点?
课后作业:基于PO模式实现一套自动化测试内容的编写。

17、注意事项
(1)当自动化运行时,出现新的标签页,需要切换句柄(

每一个标签页就是一个单独的句柄

)。为了防止标签页过多,导致句柄过多,所以每次切换的时候,如果不需要保存,则优先关闭旧的页面。

handles=driver.window_handles   # 数组类型
print(handles)
driver.close()
driver.switch_to.window(handles[1])# 旧标签页为handles[0]

18、框架设计思路
编程语言:python
框架:Selenium、Appium、Requests
设计模式:POM(PO)、关键字
数据:Excel、yaml
用例:UnitTest、PyTest
测试报告:HTMLTestRunner、Allure
持续集成:邮件发送、自动部署、自动化执行、自动化测试

19、ActionChains类
ActionChains是selenium给我们提供了一个类来

处理鼠标键盘类事件

,比如单击、双击、点击鼠标右键、拖拽等事件。
导入python文件中:

from selenium.webdriver.common.action_chains import ActionChains

基本方法的调用:

ActionChains(driver).drag_and_drop_by_offset(element_hk, x_location, y_location).perform()

driver:驱动。
drag_and_drop_by_offset:鼠标操作事件。
element_hk, x_location, y_location:元素,被操作的元素。开始移动的元素——原始元素,鼠标对元素拖到另外一个元素的x坐标,鼠标对元素拖到另外一个元素的y坐标。
perform:要提交的操作。
在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_34716145/article/details/119408946
版权归原作者 墨墨无闻小菜鸟 所有, 如有侵权,请联系我们删除。

“目前最主流的自动化测试技术selenium”的评论:

还没有评论