测试基础笔记第十六天

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、UI自动化介绍
    • 1.认识UI自动化测试
    • 2.实施UI自动化测试前置条件
    • 3.UI自动化测试执行时机
    • 4.UI自动化测试核心作用和劣势
  • 二、认识Web自动化测试工具-Selenium02
    • 1.Selenium 特点
    • 2.Selenium 核心组件
    • 3.Web自动化测试环境搭建步骤
  • 1.导包
  • 三、入门案例
    • 1.自动登录
  • 四、CSS选择器定位
    • 1.认识CSS定位
    • 2.css选择器
    • 3.CSS定位-层级选择器
    • 4.表单自动化
    • 5.元素属性定位


一、UI自动化介绍

1.认识UI自动化测试

  • UI:User Interface,简称UI,用户界面是系统和用户之间进行交互和信息交换的媒介
  • UI自动化测试:使用程序、脚本对系统界面体现的功能和数据信息展示等进行的测试技术
  • 为什么要自动化测试:
  1. 大量的版本需要回归测试
  2. 手工回归测试效率比较低
  3. 测试工程师价值得不到体现

2.实施UI自动化测试前置条件

  • 项目需要实施UI自动化测试需要满足以下前置条件
    1.项目上线发布频率高,回归测试任务重
    2.项目需要实现自动化的功能模块,需求变更不频繁

一般只实现核心功能模块

3.项目周期要长

公司自研或者公司核心产品

3.UI自动化测试执行时机

  • 一般情况下在手工测试完成之后
  • 版本或项目功能趋于稳定
  • 在这里插入图片描述

4.UI自动化测试核心作用和劣势

  • 项目实现UI自动化测试后:
    1.节省人力成本:回归测试工作由脚本代替人去执行
    2.提高回归测试效率:脚本执行测试速度更快
    3.提高测试质量:一旦自动化脚本库完善后测试执行过程更标准和准确
  • UI自动化测试劣势
    1.对测试人员要求提高
    2.前期投入成本大
    3.对项目要求高

二、认识Web自动化测试工具-Selenium02

1.Selenium 特点

在这里插入图片描述
在这里插入图片描述

2.Selenium 核心组件

  • Selenium-IDE
    浏览器插件,录制脚本工具。支持脚本回放和导出。
  • Selenium-Grid
    分布式执行自动化测试用例工具,用于大批量测试用例
    的执行
  • Selenium-Webdriver
    脚本编写核心工具,提供模拟手工操作的常用方法

3.Web自动化测试环境搭建步骤

在这里插入图片描述

  • 安装包语法:pip install selenium
  • 查看包语法:pip show selenium
  • 卸载包语法:pip uninstall selenium
  • 示例:通过程序启动浏览通过程序启动浏览器,并打开商城首页,暂停3秒,关闭浏览器,并打开百度首页,暂停3秒,关闭浏览器

1.导包

import time
from selenium import webdriver
#2.创建浏览器驱动对象
#Chrome浏览器:
driver = webdriver.Chrome()
#3.打开Web页面
driver.get(“https://hmshop-test.itheima.net/index.php”)
#4.暂停
time.sleep(3)
#5.关闭驱动对象

三、入门案例

1.自动登录

  • 关键步骤:
  1. 打开浏览器
  2. 访问页面
  3. 页面操作
  4. 关闭浏览器
    在这里插入图片描述
  • 查找元素:element = driver.find_element(定位方法, 值)
  • 元素操作:
    输入:element.send_keys(value)
    点击: element.click()
  • 步骤:
    步骤:
    1、导包
    2、打开浏览器
    3、访问页面
    4、页面操作
    ① 用户名查找及操作
    ② 密码查找及操作
    ③ 验证码查找及操作
    ④ 登录按钮查找及操作
    5、关闭浏览器

#1、导包
import time
from selenium import webdriver
#快捷导包 ctrl + alt + 空格
from selenium.webdriver.common.by import By
#2、打开浏览器
driver = webdriver.Chrome()
#窗口最大化
driver.maximize_window()
#3、访问页面
driver.get(“https://hmshop-test.itheima.net/Home/user/login.html”)
#4、页面操作
#用户名查找及操作
element = driver.find_element(By.ID, “username”)
element.send_keys(“13488888888”)
#密码查找及操作
element = driver.find_element(By.ID, “password”)
element.send_keys(“123456”)
#验证码查找及操作
driver.find_element(By.ID, “verify_code”).send_keys(“8888”)
#登录按钮查找及操作
driver.find_element(By.NAME, “sbtbutton”).click()
#5、关闭浏览器
time.sleep(3)
driver.quit()

四、CSS选择器定位

1.认识CSS定位

  • css概念:(Cascading Style Sheets)是一种语言,用来描述HTML
    元素的显示样式。
  • 选择器:一种表达式,可以找到HTML中的标签元素。
  • css定位概念:selenium利用选择器定位元素的定位方式。
  • 方法:driver.find_elements(By.CSS_SELECTOR, 选择器表达式)

2.css选择器

  • ID选择器:
    | 说明:利用元素ID属性来选择
    l 格式:#id属性值
  • 类选择器
    l 说明:利用类名来选择
    l 格式:.类名
  • 属性选择器
    l 说明:利用标签的属性来选择
    l 格式:HTML标签[属性=值]
    l 局部属性:HTML标签[属性名*=‘局部属性值’]

3.CSS定位-层级选择器

  • 父子关系:后代关系包含了父子关系,一般只需要记忆后代关系即可
    概念:据元素的父子关系来选择元素。
    表达式写法:element1>element2。
  • 语法:在这里插入图片描述
  • 后代关系:
    概念:根据元素的上级元素来选择元素(只要是目标元素上层元素即可)
    表达式写法:element1 element2。
  • 语法:在这里插入图片描述

4.表单自动化

  • 能够通过CSS选择器定位到页面元素
  • 能通过id,class进行元素定位,并实现输入框自动输入及自动清除
  • 案例:在这里插入图片描述
  • 代码:

#导包
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
#打开浏览器
driver = webdriver.Chrome()
driver.maximize_window()
#打开页面
driver.get(“https://hmshop-test.itheima.net/Home/user/reg.html”)
#页面操作
#手机号码:#username
driver.find_element(By.CSS_SELECTOR, “#username”).send_keys(“13612330001”)
#图像验证码:.inp.imgcode.J_imgcode
driver.find_element(By.CSS_SELECTOR, “[name=‘verify_code’]”).send_keys(“8888”)
#设置密码:#password
driver.find_element(By.CSS_SELECTOR, “#password”).send_keys(“123456”)
#确认密码:#password2
driver.find_element(By.CSS_SELECTOR, “#password2”).send_keys(“123456”)
#推荐人手机:.inp.fmobile.J_cellphone
driver.find_element(By.CSS_SELECTOR, “[name=‘invite’]”).send_keys(“13488888888”)
#我已阅读并同意《用户服务协议》:
#同意协议并注册:.regbtn.J_btn_agree
driver.find_element(By.CSS_SELECTOR, “.regbtn.J_btn_agree”).click()
time.sleep(3)
#退出浏览器
driver.quit()

  • 在这里插入图片描述

5.元素属性定位

  • id定位: driver.find_element(By.ID, “id属性值”)
  • class定位: driver.find_element(By.CLASS_NAME, “class属性值”)
  • name定位: driver.find_element(By.NAME, “name属性值”)
  • 案例:

#导入工具包
import time
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver, quit_driver
import random
#获取驱动、并实现页面元素定位与操作
driver = get_driver(“https://hmshop-test.itheima.net/Home/user/reg.html”)
##username
#driver.find_element(By.CSS_SELECTOR, “#username”).send_keys(“13633331001”)
#引入随机数解决手机号唯一性问题
driver.find_element(By.ID, “username”).send_keys(f"136{random.randint(20000000,
88887777)}“)
#.inp.imgcode.J_imgcode
driver.find_element(By.CLASS_NAME, “imgcode”).send_keys(“8888”)
##password
driver.find_element(By.ID, “password”).send_keys(“123456”)
##password2
driver.find_element(By.ID, “password2”).send_keys(“123456”)
#[name=‘invite’]
driver.find_element(By.NAME, “invite”).send_keys(”")
#.regbtn.J_btn_agree
time.sleep(2)
driver.find_element(By.CLASS_NAME, “J_btn_agree”).click()
#退出浏览器
quit_driver(driver)
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PaddleX的安装

参考:安装PaddlePaddle - PaddleX 文档 1、安装PaddlePaddle 查看 docker 版本 docker --version 若您通过 Docker 安装,请参考下述命令,使用飞桨框架官方 Docker 镜像,创建一个名为 paddlex 的容器,并将当前工作目…

长效住宅IP是什么?如何获取长效住宅IP?

在当今的互联网世界里,IP地址作为连接用户与网站之间的桥梁,其重要性不言而喻。对于跨境电商、社交媒体运营以及数据采集等领域的专业人士而言,普通的IP地址已无法满足日益复杂的需求。他们更需要一种稳定、安全且持久的长效住宅IP来完成各类…

02 业务流程架构

业务流程架构提供了自上而下的组织鸟瞰图,是业务流程的全景图。根据所采用的方法不同,有时被称为流程全景图或高层级流程图,提供了业务运营中所有业务流程的整体视图。 这样有助于理解企业内部各个业务流程之间的相互关系以及它们如何共同工…

jenkins slave节点打包报错Failed to create a temp file on

jenkins slave节点打包报错 一、报错信息 FATAL: Unable to produce a script file Also: hudson.remoting.Channel$CallSiteStackTrace: Remote call to slave-83at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1784)at hudson.remoting.UserRequest$…

什么是 Swagger 以及如何在 Spring Boot 中实现 Swagger:配置与实践指南

在现代 RESTful API 开发中,Swagger 是一种广泛使用的工具,用于生成、描述和可视化 API 文档。它极大地简化了 API 的开发、测试和维护过程。结合 Spring Boot,Swagger 可以快速集成到项目中,生成交互式 API 文档,方便…

Xilinx FPGA支持的FLASH型号汇总

以博主这些年的FPGA开发使用经验来看,FPGA开发的主流还是以Xilinx FPGA为主,贸易战关税战打了这么多年,我们做研发的也不可避免的要涉及一些国产替代的工作;这里把Xilinx FPGA官方支持的各类(国产和非国产)…

第3讲:ggplot2完美入门与美化细节打磨——从基础绘制到专业级润色

目录 1. 为什么选择ggplot2? 2. 快速了解ggplot2绘图核心逻辑 3. 基础绘图示范:柱状图、折线图、散点图 (1)简单柱状图 (2)折线图示范 (3)高级散点图 + 拟合线 4. 精细美化:细节打磨决定专业感 5. 推荐的美化小插件(可选进阶) 6. 小练习:快速上手一幅美化…

Vue3 上传后的文件智能预览(实战体会)

目录 前言1. Demo12. Demo2 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 此处的基本知识涉及较少,主要以Demo的形式供大…

transformer-实现单层Decoder 层

Decoder Layer 论文地址 https://arxiv.org/pdf/1706.03762 解码器层结构 Transformer解码器层由三种核心组件构成: Masked多头自注意力:关注解码器序列当前位置之前的上下文(因果掩码) Encoder-Decoder多头注意力:关…

设计模式每日硬核训练 Day 16:责任链模式(Chain of Responsibility Pattern)完整讲解与实战应用

🔄 回顾 Day 15:享元模式小结 在 Day 15 中,我们学习了享元模式(Flyweight Pattern): 通过共享对象,分离内部状态与外部状态,大量减少内存开销。适用于字符渲染、游戏场景、图标缓…

大数据开发环境的安装,配置(Hadoop)

1. 三台linux服务器的安装 1. 安装VMware VMware虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。 我们可以通过VMware来安装我们的linux虚拟机…

多模态大语言模型arxiv论文略读(四十九)

When Do We Not Need Larger Vision Models? ➡️ 论文标题:When Do We Not Need Larger Vision Models? ➡️ 论文作者:Baifeng Shi, Ziyang Wu, Maolin Mao, Xin Wang, Trevor Darrell ➡️ 研究机构: UC Berkeley、Microsoft Research ➡️ 问题背…

【深度学习与大模型基础】第14章-分类任务与经典分类算法

Part 1:什么是分类任务? 1.1 分类就是“贴标签” 想象你有一堆水果,有苹果🍎、橘子🍊、香蕉🍌,你的任务是让机器学会自动判断一个新水果属于哪一类——这就是分类(Classification&…

LeetCode 2906 统计最大元素出现至少K次的子数组(滑动窗口)

给出一个示例: 输入:nums [1,3,2,3,3], k 2 输出:6 解释:包含元素 3 至少 2 次的子数组为:[1,3,2,3]、[1,3,2,3,3]、[3,2,3]、[3,2,3,3]、[2,3,3] 和 [3,3] 。该题也是一个比较简单的滑动窗口的题目,但是…

使用 Spring Boot 进行开发

✨ 使用 Spring Boot 进行开发 ✨ 📌 本节将深入介绍如何高效使用 Spring Boot,涵盖以下核心主题: 1️⃣ 🔧 构建系统 深入了解 Spring Boot 的项目结构和依赖管理 2️⃣ ⚙️ 自动配置 探索 Spring Boot 的自动化配置机制和原…

Qt的WindowFlags窗口怎么选?

Qt.Dialog: 指示窗口是一个对话框,这通常会改变窗口的默认按钮布局,并可能影响窗口框架的样式。Qt.Popup: 指示窗口是一个弹出式窗口(例如菜单或提示),它通常是临时的且没有任务栏按钮。Qt.Tool: 标识窗口作为一个工具…

Redis高可用架构全解析:主从复制、哨兵模式与集群实战指南

Redis高可用架构全解析:主从复制、哨兵模式与集群实战指南 引言 在分布式系统架构中,Redis作为高性能内存数据库的标杆,其高可用与扩展性设计始终是开发者关注的焦点。本文将深入剖析Redis的三大核心机制——主从复制、哨兵模式与集群架构&…

音视频之H.265/HEVC网络适配层

H.265/HEVC系列文章: 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…

element-plus(vue3)表单el-select下拉框的远程分页下拉触底关键字搜索实现

一、基础内核-自定义指令 1.背景 2.定义 3.使用 4.注意 当编辑时需要回显,此时由于分页导致可能匹配不到对应label文本显示,此时可以这样解决 二、升级使用-二次封装组件 三、核心代码 1.自定义指令 定义 ----------------selectLoadMoreDirective.…

大内存生产环境tomcat-jvm配置实践

话不多讲,奉上代码,分享经验,交流提高! 64G物理内存,8核CPU生产环境tomcat-jvm配置如下: JAVA_OPTS-server -XX:MaxMetaspaceSize4G -XX:ReservedCodeCacheSize2G -XX:UseG1GC -Xms48G -Xmx48G -XX:MaxGCPauseMilli…