自动化测试-web

news2024/11/23 7:33:38

一、自动化测试理论:

  • UI: User Interface (用户接口-用户界面),主要包括:app 和web
  • UI自动化测试:使用工具或代码执行用例的过程
  • 什么样的项目适合做自动化:
  1. 需要回归测试项目(甲方自营项目、金融、电商)
  2. 需求变动不频繁:稳定的模块
  3. 项目周期长的项目:(甲方自营项目、6个月以上的外包)
  • 自动化测试的目的:提高测试效率

二、自动化测试工具及环境

1. 工具:

  • QTP:商业、收费、支持UI
  • robot framework: python扩展库,使用封装好的关键字驱动、半代码水平、支持UI
  • selenium: 开源/免费/主流支持UI

2. 环境搭建:

所需环境: python解释器+ pycharm+selenium+ 浏览器+ 浏览器驱动

selenium: pip install selenium

浏览器驱动: CNPM Binaries Mirroricon-default.png?t=N7T8https://registry.npmmirror.com/binary.html?path=chromedriver/

windows:

1、解压下载的驱动,获取到chromedriver.exe

2、将chromedriver.exe复制到python.exe所在⽬录即可(避免再次将chromedrver.exe

添加path变量)

mac:

1、解压下载的驱动,获取到chromedriver

2、将chromedriver复制到/usr/local/bin⽬录即可。

三、元素操作

1. 元素定位

通过代码调用方法查找元素

元素定位方法:

id/ name/ class/ tag_name/ link_text/ partial_link_text/ xpath/ css

步骤:

from selenium import webdriver

# 打开浏览器
driver = webdriver.Chrome("/usr/local/bin/chromedriver")
# 输入url
driver.get("https://www.baidu.com")
# 关闭浏览器
driver.quit()

1)id定位

方法: driver.find_element_by_id("id值")

前提:标签必须有id属性

输入方法: 元素.send_keys(“内容”)

driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("北京")
driver.find_element_by_id("su").click()

2)  name 定位

方法:driver.find_element_by_name("name属性值")

前提:标签有name属性

特点:由于name属性值可以重复,所以使用时需要查看是否为唯一

3)class 定位

方法:driver.find_element_by_class_name("class属性值")

前提:标签有class属性

特点:class属性值可以有多个值

4)  tag_name 定位

说明:根据标签名进行定位

方法: driver.find_element_by_tag_name("标签名")

提示: 如果页面存在多个相同标签,默认返回第一个

5)link_text 定位

说明:根据链接文本(a标签)定位

方法: driver.find_element_by_link_text("链接文本")

特点:传入的链接文本, 必须全部匹配,不能模糊

6)partial_link_text 定位

说明:根据连接文本(a标签)定位

方法: driver.find_element_by_partial_link_text("连接文本")

特点:传入的链接文本, 支持模糊匹配(传入局部文字)

7)扩展-查找一组元素

说明:返回列表格式

方法:driver.find_elements_by_xxx()

提示:如果没有搜索到符合的标签,会返回空列表

2. 元素定位(xpath\css)

为什么要学习 xpath 和 css?

如果标签没有id/name/class 属性,也不是链接标签,只能用 tag_name定位,比较麻烦。

使用xpath 和 css 比较方便,支持任意属性和层级来查找元素

1)xpath

是 xml path 的简称,使用标签路径来定位

属性:

单属性://*[@属性名='属性值']

多属性://*[@属性名='属性值' and @属性名='属性值']

层级与属性:

说明:如果元素现有的属性不能唯一匹配,需要结合层级使用

语法:

//父标签/子标签 必须为直属子级

//父标签[@属性='值']//后代标签 父和后代之间可以跨越元素

扩展:

根据显示文本定位: //*[text()='文本值']

属性模糊匹配://*[contains(@属性名,'属性部分值')]

2)css选择器

css选择器是html查找元素的工具

id选择器/类选择器/标签选择器/属性选择器/层级选择器

id选择器:

语法:#id属性值

前提: 标签必须有id属性

类选择器:

语法:.class属性值

前提:标签必须有class属性

标签选择器:

语法:标签名

提示:注意标签是否在页面中唯一,否则返回单个或所有

属性选择器:

语法: [属性名='属性值']

层级选择器:

父子关系: 选择器>选择器 ,比如: #p1>input

后代关系:选择器 选择器 比如:#p1 input

元素定位总结:

3. 元素的常用操作方法:

点击 元素.click()

输入 元素.send_keys(内容)

清空 元素.clear()

获取元素信息

  • 获取大小: 元素.size
  • 获取文本: 元素.text
  • 获取属性:元素.get_attribute('属性名')
  • 元素是否可见: 元素.is_displayed()
  • 元素是否可用:元素.is_enabled()
  • 元素是否选中: 元素.is_selected()

4. 浏览器的操作

浏览器常用的api:

窗口最大化: driver.maximize_window()

设置窗口大小: driver.set_window_size(width,height)

设置窗口位置:driver.set_window_position(x,y)

页面后退操作:driver.back()

页面前置操作:driver.forward()

页面刷新:driver.refresh()

浏览器常用获取信息api:

关闭当前窗口: driver.close()

关闭浏览器:driver.quit()

获取标题:driver.title

获取网页地址: driver.current_url

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

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

相关文章

Docker 学习笔记(八):Dockerfile实战篇,制作 Tomcat 镜像,发布镜像到 DockerHub 和阿里云

一、前言 记录时间 [2024-4-13] 系列文章简摘: Docker 学习笔记(六):挑战容器数据卷技术一文通,实战多个 MySQL 数据同步,能懂会用,初学必备 Docker 学习笔记(七)&#x…

树--构建二叉排序树

一、二叉排序树介绍 二叉排序树:对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。 特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点 二、构建有…

几分钟!你的PDF文件就可以具有仿真翻页的效果!

你是否曾经在阅读PDF文件时感到困扰,因为它的页面是静态的,无法模拟真实的翻页效果?现在,我教你一个很实用的方法:几分钟!你的PDF文件就可以具有仿真翻页的效果! 工具:FLBOOK在线制作…

深入理解JavaScript - JavaScript中call、apply、bind方法

一、call() / apply() JavaScript中的函数是对象,与其他JavaScript对象一样,JavaScript函数也有方法。其中有两个自带的方法 – call和apply,可以利用这两个方法来间接调用某个函数。 通过一个简单的例子体会一下call和apply的用法: funct…

windows下使用的的数字取证工作工具套装:forensictools

推荐一套windows下使用的的数字取证工作工具套装:forensictools 部分工具包括: ▫️exiftool,一个命令行应用程序和 Perl 库,用于读写元信息。 ▫️YARA,一款开源工具,用于对恶意软件样本进行识别和分类。…

LeetCode最长有效括号问题解

给定一个仅包含字符的字符串(’ 和 ‘)’,返回最长有效的长度(出色地-形成) 括号子弦。 示例1: 输入:s “(()” 输出:2 说明:最长的有效括号子字符串是 “()” 。 示例2: 输入:s “)()())…

设计模式——迭代器模式15

迭代器模式提供一种方法访问一个容器对象中各个元素&#xff0c;而又不需暴露该对象的内部细节。 设计模式&#xff0c;一定要敲代码理解 抽象迭代器 /*** 迭代抽象* */ public interface Iterator<A> {A next();boolean hasNext(); }迭代器实现 /*** author ggbond*…

记一次http访问超时服务器端调试

问题&#xff1a;http访问服务器时没有返回&#xff0c;没有超时&#xff0c;一直在阻塞 处理过程&#xff1a;telnet端口能连上&#xff0c;服务端程序也不存在处理时间过长的情况。 说明tcp连接没问题。推测是客户端连接后再发起请求&#xff0c;服务端阻塞了。因为很多客户…

【C++程序员的自我修炼】拷贝构造函数

心存希冀 追光而遇目有繁星 沐光而行 目录 拷贝构造函数概念 拷贝构造的特征 无穷递归的解释 浅拷贝 总结&#xff1a; 深拷贝 拷贝构造函数典型调用场景 总结 契子✨ 在生活中总有很多琐事&#xff0c;不做不行做了又怕麻烦&#xff0c;有时候想要是有个和自己一模一样的人就…

功能测试_订购单检查_判定表

画判定表的步骤&#xff1a; 列出条件 列出动作

[大模型]Yi-6B-chat WebDemo 部署

Yi-6B-chat WebDemo 部署 Yi 介绍 由60亿个参数组成的高级语言模型 Yi LLM。为了促进研究&#xff0c;Yi 已经为研究社区开放了Yi LLM 6B/34B Base 和 Yi LLM 6B/34B Chat。 环境准备 在autodl平台中租一个3090等24G显存的显卡机器&#xff0c;如下图所示镜像选择PyTorch–…

【Linux】磁盘与文件系统管理

目录 一、 磁盘结构 1. 数据结构 2. 物理结构 3. 硬盘的接口类型 二、 如何使用Linux中的磁盘 三、 文件系统 四、 磁盘分区 1. MBR分区 2. 分区的优缺点 3. 磁盘及分区的管理工具 五、格式化与挂载 1. 格式化 2. 挂载 六、实例演示 1. 演示分区格式化挂载 2. …

Springboot+Vue项目-基于Java+MySQL的旅游网站系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】

马赛克效果 马赛克指现行广为使用的一种图像&#xff08;视频&#xff09;处理手段&#xff0c;此手段将影像特定区域的色阶细节劣化并造成色块打乱的效果&#xff0c;因为这种模糊看上去有一个个的小格子组成&#xff0c;便形象的称这种画面为马赛克。其目的通常是使之无法辨…

麒麟v10安装mysql-8.0.35

因为要修复漏洞的原因&#xff0c;这两天将麒麟v10操作系统的服务器上的MySQL版本由5.7.27升级到8.0.35&#xff08;mysql安装包下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions)&#xff09;&#xff0c;mysql的安装过程主要参考了这个博主…

Qlik在数据隐私计划中利用人工智能和分析

在技术快速变革的时代&#xff0c;政府正在努力追赶技术发展和我们日常生活中产生的个人身份信息&#xff08;“PII”&#xff09;数量不断增加的步伐。规范 PII 使用的隐私法不断加强&#xff08;Gartner估计&#xff0c;虽然到 2020 年&#xff0c;全面的隐私法将覆盖全球 10…

MQ:延迟队列

6.1场景&#xff1a; 1.定时发布文章 2.秒杀之后&#xff0c;给30分钟时间进行支付&#xff0c;如果30分钟后&#xff0c;没有支付&#xff0c;订单取消。 3.预约餐厅&#xff0c;提前半个小时发短信通知用户。 A -> 13:00 17:00 16:30 延迟时间&#xff1a; 7*30 * 60 *…

【央国企专场】——国家电网

国家电网目录 一、电网介绍1、核心业务2、电网组成 二、公司待遇三、公司招聘1、招聘平台2、考试安排2.3 考试内容 一、电网介绍 1、核心业务 国家电网公司&#xff08;State Grid Corporation of China&#xff0c;简称SGCC&#xff09;是中国最大的国有企业之一&#xff0c…

【漏洞预警】Linux kernel权限提升漏洞(CVE-2024-1086)

一、漏洞概述 漏洞名称 Linux kernel权限提升漏洞 CVE ID CVE-2024-1086 漏洞类型 Use-After-Free 发现时间 2024-03-28 漏洞评分 7.8 漏洞等级 高危 攻击向量 本地 所需权限 低 利用难度 低 用户交互 无 PoC/EXP 已公开 在野利用 未知 Netfilte…

突破编程_前端_SVG(rect 矩形)

1 rect 元素的基本属性和用法 在SVG中&#xff0c;<rect> 元素用于创建矩形。 <rect> 元素有一些基本的属性&#xff0c;可以用来定义矩形的形状、位置、颜色等。以下是这些属性的详细解释&#xff1a; x 和 y &#xff1a;这两个属性定义矩形左上角的位置。 x …