软件测试(Web自动化测试)

一.自动化测试简介

1.自动化测试是一种把人工驱动的测试行为转化为机器执行的测试过程。

2.使用自动化测试需要满足的3个条件:

(1)项目需求变动不频繁

(2)项目进度压力不大,时间不紧迫

(3)多种浏览器或平台上可以重复运行相同的测试脚本

3.自动化测试的优点

(1)提高回归测试的效率

(2)提高测试人员的利用率

(3)提高测试的精确度

(4)提高测试的便捷性

4.自动化测试的缺点

(1)不能提高测试的有效性

(2)发现的缺陷比人工测试少且不容易发现新的缺陷

二.自动化测试的常见技术

1.录制与回放技术

2.脚本技术

(1)线性脚本

(2)结构化脚本

(3)共享脚本

3.数据驱动技术

(1)关键字驱动

(2)行为驱动

三.搭建自动化测试环境

1.安装Python解释器和PyCharm

2.安装Selenium

点击设置

点加号

在搜索栏输入selenium

点击selenium然后安装就可以了

3.安装浏览器驱动

1.在Web自动化测试中,浏览器驱动通过PyCharm中的测试脚本转换为浏览器能够识别的指令来模拟用户操作网页,浏览器在接收到指令后,会通过浏览器驱动将操作结果返回到PyCharm的控制台。每一种浏览器都需要有一个特定的浏览器驱动,例如,Chrome浏览器驱动是chromedriver.exe,Firefox浏览器驱动是geckodriver.exe,IE驱动时IEDriverServer.exe

2.下面以Chrome浏览器为例,操作chromedriver.exe驱动的下载和安装过程

(1)查看Chrome版本信息

点击3个点

点击帮助,点击关于Google Chrome

(2)下载Chrome浏览器驱动

chromedriver 115及115之后版本下载地址:

Chrome for Testing availability (googlechromelabs.github.io)

四.Selenium工具的基本应用

(一)Selenium元素定位方法

find_element()方法中有两个参数,第一个参数by表示元素定位的类型,有By模块提供,默认通过ID属性来定位;第二个参数value表示元素定位类型的属性值。

from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome()
url = "http://hmshop-test.itheima.net/"
driver.get(url)
driver.find_element(By.CLASS_NAME,"c-n")

 下面列举调用find_element()方法定位元素的实例代码,具体如下。

driver.find_element(By.ID,"userA")
driver.find_element(By.NAME,"passwordA")
driver.find_element(By.CLASS_NAME,"telA")
driver.find_element(By.TAG_NAME,"input")
driver.find_element(By.LINK_TEXT,'访问 新浪 网站')
driver.find_element(By.PAPTIAL_LINK_TEXT,'访问')
driver.find_element(By.XPATH,'//*[@id="emailA"]')
driver.find_element(By.CSS_SELECTOR,'#emailA')

(二)Selenium常用的操作方法

1.元素的常用操作方法

方法说明
send_keys(*value)输入操作方法,该方法中的参数表示输入的内容
clear()清空操作方法
submit()提交表单操作方法
click()点击操作方法
get(url)获取操作方法,url表示Web页面的资源路径
get_screenshot_as_file(filename)截图操作方法,filename是页面截图后存储的绝对路径

2.浏览器的常用操作方法

方法说明
maximize_window()设置浏览器窗口为最大化
minimize_window()设置浏览器窗口为最小化
close()关闭浏览器窗口
quit()关闭浏览器所有窗口并退出浏览器驱动

3.元素等待的3种方法

(1)强制等待

强制等待通过调用sleep(seconds)函数让程序休眠一段时间,到达时间后程序再运行。函数中的参数seconds表示等待的时间,时间单位默认为秒。

(2)隐式等待

隐式等待指定位页面元素时,如果能定位到元素,则测试程序直接返回该元素,不触发等待;如果定位不到该元素,则需要等待一段时间后再定位;如果超过程序设置的最长等待时间还没有定位到指定元素,则程序会抛出元素不存在的异常(NoSuchElemenException)。在程序中设置隐式等待时间需要调用implicity_wait(timeout)方法,该方法中的参数timeout表示隐式等待的最长等待时间,单位为秒。

(3)显式等待

显式等待是指定位指定元素时,如果能定位到指定元素,则测试程序直接返回该元素,不触发等待;如果定位不到指定元素,则需要等待一段时间后再重新进行定位;如果超过程序设置的最长等待时间还没有定位到指定元素,则程序会抛出元素超时异常(TimeoutException)。实现显式等待需要调用的方法为WebDriverWait(),在程序中进行显式等待时,WebDriverWait()方法必须与until()方法或until_not()方法结合使用。

注:

until()方法用于调用一个查找元素的匿名函数,如果该函数的返回值为True,表示查找到元素;如果该函数的返回值为False,表示未查找到元素。当未查找到元素时,程序会每隔一段时间调用一次until()方法查找元素,直到查找到元素为止。

until_not()方法也用于调用一个查找元素的匿名函数,如果该函数的返回值为True,表示未查找到元素;如果该函数的返回值为False,表示查找到元素。当未查找到元素时,程序会每隔一段时间调用一次until()方法查找元素,直到查找到元素为止。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/570595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python struct模块 处理字节流

首先看一下,struct 的字节顺序格式。 其次是struct的格式对照表。 下面是案例: 单项数据编解码 >>>struct.pack(i,379978) bJ\xcc\x05\x00 >>>struct.pack(>i,379978) b\x00\x05\xccJ解析: >>>struct.unpa…

5.组合与继承

1.面向对象 在C中,面向对象(Object-Oriented)是一种程序设计范式,它使用“对象”来设计应用程序和软件。面向对象编程(OOP)的核心概念包括类(Class)、对象(Object&#x…

23.leetcode---从前序与中序中遍历二叉树(Java版)

题目链接: https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/submissions/518810727/ 代码: 测试:

建设数字化工厂系统需要哪些核心技术

随着工业4.0时代的来临,数字化工厂系统已成为制造业转型升级的关键所在。数字化工厂系统通过集成各种先进技术,实现生产过程的智能化、自动化和高效化,进而提升企业的竞争力。那么建设这样一个系统究竟需要哪些核心技术呢? 一、工…

如何创建网址静态码?二维码扫码跳转网址的方法

现在很多的网址链接需要转换成二维码之后来使用,比如印刷包装、宣传单、公众号等方面应用,用户可以通过扫码跳转到对应链接的页面,查看页面内容。那么想要将链接转换二维码,并且二维码长期有效,可以使用生成静态码的方…

CSS文本属性与字体属性

目录 文本属性 文本颜色 文本对齐 修饰文本 文本缩进 行高 字体属性 字体系列 字体大小 字体粗细 字体样式 字体/文本综合属性写法 Chrome调试工具的使用 文本属性 文本颜色 在CSS中使用color 属性用于定义文本的颜色,使用background-color设置一个盒…

attempt to compare nil with number -- 黑马点评出现问题

问题情况 : 主要问题 : 调用lua执行redis时,有一个值会接受nil(因为redis中没有该数据)或者数值,当该值为nil时执行报错,因为会用到将该值与其他数字比较,故报错attempt to compare nil with number 当然…

Linux 底软开发——对CAN的详细操作(周期发送,异常检测,过滤报文)

Linux底软开发—对CAN发送接收详细操作 文章目录 Linux底软开发—对CAN发送接收详细操作1.保证多条CAN数据发送的周期性2.解析CAN报文数据3.CAN总线异常机制应对4.对CAN报文进行过滤操作5.完整的接收报文代码(过滤,心跳检测,解析)…

大语言模型Ollama

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Ollama简介 Ollama是一个开源的大语言模型平台,它允许用户在本地环境中运行、创建和共享大型语言模型。Ollama提供了丰富的功能和特性,使得用户可以…

eCharts 折线图 一段是实线,一段是虚线的实现效果

在lineStyle里写了不生效的话,可以尝试数据拼接 option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [150, 230, 224,218 ,,,],type: line},{data: [,,, 218, 135, 147, 260],type: line,lineStyl…

Git:使用conda命令切换虚拟环境

1. 问题 在win10电脑的Git中,无法使用conda list命令,报错(bash:conda:command not found)。也无法使用conda activate base命令激活虚拟环境,报错(bash:conda&#xff…

【面试必会】线程池创建方式详解

最近面试问道了线程池的创建方式,这里出一篇文章记录下这一知识点! 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的ThreadFactory创建…

报名照片10k怎么处理?教你几个方法

现在在每年的事业单位考公的时候,大家都会在网上报名提交个人信息,其中有一项就是需要上传我们的考试证件照,平台通常会要求照片大小为10kb以下,那么如何将过大的图片压缩到10kb呢?本文将介绍如何处理这一问题,让您轻…

STM32 HAL库F103系列之ADC实验(一)

ADC工作原理: 1、输入通道: 2、转换序列: A/D转换被组织为两组:规则组(常规转换组)和注入组(注入转换组) 规则组最多可以有16个转换,注入组最多有4个转换 规则组和注入…

redis7安装与配置

一、下载 通过 redis官网 或者 redis中文网 下载。 以下是 redis 相关文档资料链接: redis源码地址 redis在线测试 redis命令参考 redis中文文档 历史发布版本的源码地址 二、版本命名规则 Redis从发布到现在,已经有十余年的时光了,…

修改npm源--多种方式

2024年,1月22日 npm.taobao.org 域名证书已到期下线。 重置官方源 npm config set registry https://registry.npmjs.org/ 淘宝源,使用最新版,旧版停止了 npm config set registry https://registry.npmmirror.com 查看当前镜像源 npm …

跨越未知,拥抱挑战——新征程

在浩瀚的IT领域里,每一位开发工程师都如同一位探险家,不断地探索、挑战和成长。作为一名新入职的Java开发工程师,我面临着全新的技术栈和业务领域,这是一次跨越未知的征程,也是一次自我提升的机会。 新入职 初入公司…

基于Springboot的网课管理系统

基于SpringbootVue的网课管理系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 课程表 论坛交流 学校公告 后端 学生管理 教师管理 班级管理 课程分类管理…

【AI】如何让局域网PC能够访问langchain框架的AI服务

【背景】 在单位内部成功运行了langchain服务,但是发现本地可以用默认8000端口访问,但是局域网内其它机器却无法访问服务页面。 【分析】 首先查看项目文件夹中的server.py。由于这个server.py的存在,我一开始以为langchain整套框架的服务…

丙级资质升级乙级实操:河南灌溉排涝项目所需材料清单

丙级资质升级乙级实操:河南灌溉排涝项目所需材料清单 在河南灌溉排涝项目中,从丙级资质升级到乙级资质是一个重要且复杂的过程。为了成功完成这一过程,需要准备一系列详尽且符合规定的材料。以下是针对此实操所需的关键材料清单:…