03-selenium的自动化测试模型

Selenium浏览器自动化测试框架详解 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。 阅读详情
在介绍自动化测试模型之前,我们先来了解库、框架和工具之间的区别。

5.1    基本概念

1.库

库的英文单词是 Library,库是由代码集合成的一个产品,可供程序员调用。面向对象
的代码组织形成的库叫类库,面向过程的代码组织形成的库叫函数库。从这个角度看,第
4 章介绍的 WebDriver 就属于库的范畴,因为它提供了一组操作 Web 页面的类与方法,所
以可以称它为 Web 自动化测试库。

2.框架

框架的英文单词是  Framework,框架是为解决一个或一类问题而开发的产品,用户一
般只需使用框架提供的类或函数,即可实现全部功能。从这个角度看,unittest  框架(第  6
章)主要用于测试用例的组织和执行,以及测试结果的生成。因为它的主要任务就是帮助
我们完成测试工作,所以通常称它为测试框架。

3.工具

工具的英文单词是 Tools,工具与框架所做的事情类似,只是工具提供了更高层次的封
装,屏蔽了底层的代码,提供了单独的操作界面供用户使用。例如,UFT(QTP)、Katalon
就属于自动化测试工具。
5.2 自动化测试模型

自动化测试模型可分为线性测试、模块化与类库、数据驱动测试和关键字驱动测试,
下面分别介绍这几种自动化测试模型的特点。

1.线性测试

通过录制或编写对应用程序的操作步骤会产生相应的线性脚本,每个线性脚本相对独
立,且不产生依赖与调用。这是早期自动化测试的一种形式,即单纯地模拟用户完整的操
作场景。第 4 章中的自动化测试例子就属于线性测试。

2.模块化与类库

线性测试的缺点是不易维护,因此早期的自动化测试专家开始思考用新的自动化测试
模型来代替线性测试。做法很简单,借鉴了编程语言中的模块化思想,把重复的操作单独
封装成公共模块。在测试用例执行过程中,当需要用到模块封装时对其进行调用,这样就
最大限度地消除了重复,从而提高测试用例的可维护性。

3.数据驱动测试

虽然模块化测试很好地解决了脚本的重复问题,但是,自动化测试脚本在开发过程中
还是发现了诸多不便。例如,在测试不同用户登录时,虽然登录的步骤是一样的,但是登
录用的数据是不同的。模块化测试并不能解决这类问题。于是,数据驱动测试的概念被提
出。

数据驱动测试的定义:数据的改变驱动自动化测试的执行,最终引起测试结果的改变。
简单理解就是把数据驱动所需要的测试数据参数化,我们可以用多种方式来存储和管理这
些参数化的数据。

4.关键字驱动测试

关键字驱动测试又被称为表驱动测试或基于动作字测试。这类框架会把自动化操作封
装为“关键字”,避免测试人员直接接触代码,多以“填表格”的形式降低脚本的编写难
度。

Robot Framework 是主流的关键字驱动测试框架之一,通过它自带的 Robot FrameworkRIDE 编写的自动化测试用例

本节简单介绍了几种测试模型的特点。这几种测试模型并非后者淘汰前者的关系,在

实际实施过程中,往往需要相互结合使用。

5.3    模块化与参数化

模块化与参数化一般需要配合使用,即在创建函数或类方法时为它们设置入参,从而
使它们可以根据不同的参数执行相应的操作。

1、



class Mail:

    def __init__(self, driver):
        self.driver = driver

    def login(self, username, password):
        """ 登录 """
        self.driver.switch_to.frame('x-URS-iframe')
        self.driver.find_element_by_name("email").clear()
        self.driver.find_element_by_name("email").send_keys(username)
        self.driver.find_element_by_name("password").clear()
        self.driver.find_element_by_name("password").send_keys(password)
        self.driver.find_element_by_id("dologin").click()

    def logout(self):
        """ 退出 """
        self.driver.find_element_by_link_text("退出").click()

2、

"""
126邮箱登录/退出
"""
from time import sleep
from selenium import webdriver
from module import Mail

driver = webdriver.Chrome()
driver.get("http://www.126.com")
# 调用Mail类并传入driver驱动
mail = Mail(driver)

# 登录
mail.login("", "")

# 登录之后的动作...
sleep(5)

# 退出
mail.logout()

driver.quit()

3、

"""
126邮箱登录/退出
"""
from time import sleep
from selenium import webdriver
from module import Mail

driver = webdriver.Chrome()
driver.get("http://www.126.com")

user_info = [
    {"username": "", "password": ""},
    {"username": "", "password": "123"},
    {"username": "user", "password": ""},
    {"username": "error", "password": "error"},
    {"username": "admin", "password": "admin123"},
]

# 调用Mail类
mail = Mail(driver)

# 登录账号为空
mail.login(user_info[0]["username"], user_info[0]["password"])

# 用户名为空
mail.login(user_info[1]["username"], user_info[1]["password"])

# 密码为空
mail.login(user_info[2]["username"], user_info[2]["password"])

# 用户名密码错误
mail.login(user_info[3]["username"], user_info[3]["password"])

# 管理员登录
mail.login(user_info[4]["username"], user_info[4]["password"])

# ……
5.4 读取数据文件

虽然前面的例子中用到了参数化,但大多数测试更倾向于把测试数据放到数据文件中。
下面介绍几种常见的读取数据文件的方法。

5.4.1  读取 txt 文件

txt 文件是我们经常操作的文件类型,Python 提供了以下几种读取 txt 文件的方法。
  read():读取整个文件。
  readline():读取一行数据。
  readlines():读取所有行的数据。
回到前面登录的例子,现在把用户名和密码存放到 txt 文件,然后读取该 txt 文件中的
数据作为测试用例的数据。创建./data_file/user_info.txt 文件。

:123
user:
error:error
admin:admin123



这里将用户名和密码按行写入  txt  文件中,用户名和密码之间用冒号“:”隔开。创建
read_txt.py 文件,用于读取 txt 文件。
# 读取文件
with(open("./data_file/user_info.txt", "r")) as user_file:
    data = user_file.readlines()

# 格式化处理
users = []
for line in data:
    user = line[:-1].split(":")
    users.append(user)

# 打印users二维数组
print(users)

"""
# 调用Mail类
mail = Mail(driver)

# 用户名为空
mail.login(users[0][0], users[0][1])

# 密码为空
mail.login(users[1][0], users[1][1])

# 用户名密码错误
mail.login(users[2][0], users[2][1])

# 管理员登录 admin
mail.login(users[3][0], users[3][1])

"""
5.4.2   读取 CSV 文件

CSV  文件可用来存放固定字段的数据,下面我们把用户名、密码和断言保存到  CSV
文件中。

# coding=utf-8
import csv
import codecs
from itertools import islice

# 读取本地 CSV 文件
data = csv.reader(codecs.open('./data_file/user_info.csv', 'r', 'utf_8_sig'))

# 用户存放用户数据
users = []

# 循环输出每行信息
for line in islice(data, 1, None):
    users.append(line)

# 打印
print(users)
5.4.3   读取 XML 文件

有时我们需要读取的数据是不规则的。例如,我们需要用一个配置文件来配置当前自
动化测试平台、浏览器、URL、登录的用户名和密码等,这时就可以使用  XML  文件来存
放这些测试数据。
from xml.dom.minidom import parse

# 打开xml文档
dom = parse('./data_file/config.xml')

# 得到文档元素对象
root = dom.documentElement

# 获取(一组)标签
tag_name = root.getElementsByTagName('os')

print(tag_name[0].firstChild.data)
print(tag_name[1].firstChild.data)
print(tag_name[2].firstChild.data)

login_info = root.getElementsByTagName('login')

# 获得login标签的username属性值
username = login_info[0].getAttribute("username")
print(username)

# 获得login标签的password属性值
password = login_info[0].getAttribute("password")
print(password)

# 获得第二个login标签的username属性值
username = login_info[1].getAttribute("username")
print(username)

# 获得第二个login标签的password属性值
password = login_info[1].getAttribute("password")
print(password)
5.4.4   读取 JSON 文件

JSON  是一种轻量级的数据交换格式,清晰的层次结构使得  JSON  文件被广泛使用。
Python 同样可以读取 JSON 文件,下面创建 user_info.json 文件。
import json

with open("./data_file/user_info.json", "r") as f:
    data = f.read()

user_list = json.loads(data)
print(user_list)



通过 open()方法即可读取 user_info.json 文件。因为测试数据本身是以列表和字典格式
存放的,所以读取整个文件内容后,通过 JSON 提供的表将 str 类型转换为 list 类型即可。
注意:本节仅简单介绍了几种常见的读取数据文件的方法。在自动化测试中,数
据驱动必须和单元测试框架一起讨论才有意义,所以我们在介绍完 unittest 单元测
试框架之后再来讨论数据驱动

不是吧?你还在卑微的做手工测试?Python+Selenium的自动化测试教程它来了 话不多说,我只是一个喜欢分享整理软件测试相关的学习的卑微萌新,直接上干货 大家如果想下载我录制的一些软件测试学习视频、面试资料 或者想我的哈皮群友讨论怎么学软件测试、自动化测试的都可以点这里✔← 自动化测试基础分层的自动化测试1.单元自动化测试2.接口自动化测试3.UI 自动化测试适合自动化测试的项目如何学习 UI 自动化测试1.编程语言2.Selenium/appium API3.单元测试框架Selenium 简介1.Selenium 1.02.Selenium 2.03.Selenium 3.0. 阅读详情

相关推荐

python+selenium实现自动化测试

学python的小小曲折为什么要学python因为想搞自动化测试,要用python写脚本,虽然之前接触过Java,但是学得很烂,python简单容易上手,学习成本低,那么怎么学,之前一直陷入一个误区,虽然明确自己的目的,但是没有按照目的取去走,我只是要用python写脚本,不用它去做数据分析,不用它去玩爬虫,只是写脚本首先看了python核心编程,试着学了python网络编程,但是真的你不在实际应...

qq_34364740的博客 1757

Selenium3自动化测试——19.读取数据文件

1. 实现目标 在测试与开发中,经常需要对文件进行各种读取操作。这里介绍针对txt、csv、xml、json文件的读取。 2. 读取TXT文件 2.1 user_info.txt文件 :123 user: error:error admin:admin123eee? 2.2 读取txt文件.py #line[:-1]其实就是去除了这行文本的最后一个字符(换行符)后剩下的部分。 #读...

Susan的博客 638

selenium2-python25-自动化测试模型-登录模块化

selenium2-python25-自动化测试模型-登录模块化、软件测试教程

Python+Selenium学习--自动化测试模型

一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库、测试数据源、测试对象识别标准,以及种可重用的模块。自动化测试框架在发展的过程中经历了几个阶段,模块驱动测试、数据驱动测试、对象驱动测试。本章就带领读者了解这几种测试模型

自动化软件测试 581

Python selenium自动化测试模型图解

主要介绍了Python selenium自动化测试模型图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

汇总药用数据库(Pubchem,bingdingDB,Chembl,ExcapeDB)数据

记载一下如何汇总4大数据库的数据

recher_He1107的博客 3394

selenium自动化之PO模型

web自动化测试

weixin_43080930的博客 1171

QT | QT打包生成单个EXE文件

1.以release方式运行程序 2.在release文件夹中找到.exe文件 如果没有找到exe,可能是因为在项目中勾选了shadow build,你可以在构建目录中找到exe 3.将exe放在一个新建的文件夹中,因为待会儿会生成很多dll文件 4.点击电脑左下角搜索QT,打开Qt 5.8 for Desktop (MinGQW 5.3.0 32bit) 5.进入刚刚新建的文件夹,输入wi...

⊳ideal world⊲~ヽ(゚︺゚)Hi 1238

web自动化测试入门篇03——selenium使用教程

web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”,通常都会作为广大测试从业者的首选学习对象,相较于C/S架构的自动化来说,B/S有着其无法忽视的诸多优势,从行业发展趋、研发模式特点、测试工具支持,其整体的完整生态已经远远超过了C/S架构方面的测试价值。接上一篇文章,我们将继续深入探讨Selenium的相关使用方法与技巧。

Austin的博客 8915

Ubuntu的初步环境配置(VMware)

4.屏幕显示不全解决完后,在试用Ubuntu里面,直接双击“安装Ubuntu 20.04.6 LTS”。如果不存在“屏幕显示不全”的问题,直接点击安装即可,大致安装步骤与以下步骤类似。15.点击现在重启,重启成功后,会出现“清除安装介质”的问题。19.此时点开火狐,可以上网,但只可输入英文,不可以输入中文,具体解决方法见3.2。3.进入安装界面,此时可能会出现“屏幕显示不全”的问题,具体解决方法见3.1。8.选择“正常安装”、“安装Ubuntu时下载更新”,点击继续。最后,点击保留更改,设置成功。

森菌蛙诺的博客 2276

【信创-k8s】银河麒麟V10国防版+鲲鹏/飞腾(arm64架构)在线/离线部署k8s1.30+kubesphere

银河麒麟作为国家核高基专项的重要成果,国防版凭借其卓越的安全性和可靠性,已成为军工领域的首选操作系统。之前我们在适配麒麟V4国防版的过程中已发现诸多安全性要求,而麒麟V10国防版在安全防护等级上又达到了更高的级别。本文将主要演示离线部署,因为军工项目基本不会出现联网场景。即使在线,也可以按离线方式部署,且离线部署由于有私有仓库,不会存在镜像获取不到和丢失情况。

jiaworld的博客 730

selenium自动化测试03

小练习 创建packa包 autotest03,创建class类AddAddress.java 在自动化测试02里面,我们学习了用xpath来定位下拉框的元素,现在我们用新的方法来定位。用select类来定位 我们可以创建Select类的对象,需要提前定位到下拉框,然后使用对象操作一个下拉框 第一项的id是province,那么我们可以编写代码,定义变量 //下拉框操作 //创建Select类的对象 Select s1 = new Select(driver.findElement(By.i

Mengxy的博客 9837

sklearn2pmml xgboost缺失值(missing)处理的坑

sklearn2pmml xgboost缺失值(missing)如何处理 今天同事在部署xgboost pmml模型时遇到了大坑,线上spark预测和本地python预测结果怎么都不对应,记录一下处理过程。 看了下同事的代码,貌似也没有问题 from sklearn2pmml import PMMLPipeline from sklearn2pmml import sklearn2pmml fro...

Skycrab 8969

一文带你深入浅出Web的自动化测试工具Selenium 4.xx【建议收藏】

前言 第01节 Selenium概述 第02节 安装浏览器驱动(以Google为例) 第03节 定位页面元素 1. 打开指定页面 2. id 定位 3. name 定位 4. class 定位 5. tag 定位 6. xpath 定位 7. css 选择器 8. link 定位 9. 示例 有道翻译 第04节 浏览器控制

HHX_01的博客 2万+

ESP32 DW1000 UWB 室内定位系统

详细介绍ESP32 DW1000 UWB 室内定位系统的设计演示demo。

DT程序员的博客 1662

Parasoft C++Test软件单元测试_操作指南

本文主要为使用C++TEST进行单元测试的流程性操作讲解,后续文章将以专题形式进行详细讲解,以及用一些被测函数作为示例进行实例讲解。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1574

什么是Selenium?使用Selenium进行自动化测试

Selenium Grid 由 Patrick Lightbody 开发,最初称为 HostedQA(最初是 Selenium v1 的一部分),它与 RC 结合使用以在远程计算机上运行测试。实际上,使用 Grid 可以在多台计算机上同时执行多个测试脚本。借助 Hub-Node 架构实现并行执行。一台机器将承担集线器的角色,其他机器将充当节点。集线器控制在各种操作系统内的各种浏览器上运行的测试脚本。在不同节点上执行的测试脚本可以用不同的编程语言编写。

934

Hermes Agent 彩蛋大盘点:藏在终端里的浪漫

本文主要介绍了Hermes Agent 彩蛋大盘点:藏在终端里的浪漫,希望能对使用Hermes Agent的同学们有所帮助。 文章目录 1. 前言 2. Spinner 动画 3. Kawaii 表情 4. 思考动词 THINKING_VERBS 5. 皮肤主题 6. 启动 Banner 7. 工具 Emoji 8. 内置人格 9. SOUL.md —— Agent 的灵魂 10. BOOT.md —— 启动自动执行 11. 随机 Tips 12. 统计总览

weixin_43178406的博客 7万+

什么是Selenium?使用Selenium进行自动化测试!

你知道什么是 Selenium 吗?你知道为什么要使用它吗?答案就在本文中,很高兴能够与你共飧。自动化测试正席卷全球,Selenium 认证是业界最抢手的技能之一。

MJH827的博客 1052

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Web自动化测试03:Selenium安装配置,详细教程

系列文章目录 ????软件测试功能到自动化学习路线图,2022年最新版技术栈 ????软件测试01:从了解测试岗位职能和测试流程开始,附作业 ????软件测试02:6大实际案例手把手教你设计测试点 ????软件测试03:用例执行以及缺陷管理的学习,附禅道下载使用流程 ????软件测试04:你必须要知道的HTML标签作用 ????软件测试实战项目web资讯管理平台—黑马头条测试 ????身为开发必知必会的Linux:Linux远程连接/命令的使用 ????Linux命令大全,唯一以案例详解文,持续更新中 ?

黑马程序员官方博客 1087

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

一文详解:自动化测试工具——Selenium

Selenium是一个用于Web应用程序测试的工具。是一个开源的Web的。

qq_73332379的博客 1248

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Selenium自动化测试的显示等待

说了那么多条件,其实我们也可以自己实现一个条件类,上面是自己实现的一个条件类,根据页面的url和标题来判断页面是否被正确加载,# sleep(2)wait.until(page_is_load("百度一下,你就知道", "http://www.baidu.com/"))

2301_78843735的博客 2858

Selenium Web自动化测试学习笔记(一)

技术手段模拟人工,执行重复性任务,准确率100%,高于人工。

hetupyou的博客 1952
上一篇: 02-selenium的进一步学习(控制浏览器窗口+)
下一篇: 04-unittest单元测试框架
老板来片烤面包
博客等级 码龄7年 1535粉丝 217原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老板来片烤面包

君子博学于文,赠之以礼,谢君~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值