测试:自动化测试

news2024/12/28 17:47:03

文章目录

  • 概念
  • web测试
  • selenium的工作原理
  • selenium的常用函数
    • 元素定位
    • 操作测试对象
    • 窗口
    • 弹窗

概念

自动化的类型很多,那选择哪一种测试的收益是比较好的呢?

这里引出一个自动化测试金字塔

在这里插入图片描述
理想的自动化测试金字塔表达了自动化测试的理想状态,就是用较少的时间和精力在单元测试上,就能发现更多有效的问题,在实际的自动化测试中是这样:

在这里插入图片描述

web测试

在实际的测试中,需要对于一个特定的软件进行自动化的测试,包含但是不限于有软件所有界面的UI自动化测试,所有接口的接口自动化测试,而下面也主要是进行web自动化测试

这里主要是使用Selenium来进行自动化测试,安装一下必要的内容:

pip install webdriver-manager
pip install selenium==4.0.0

创建项目,查看一下是否符合要求:

在这里插入图片描述
看到有这两个包,就说明没问题了~

接下来,尝试编写脚本的第一个代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

# 创建驱动对象
# 打开浏览器
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

# 输入百度网址
driver.get("https://www.baidu.com")

# 搜索框输入内容
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("C++")

# 点击百度一下
driver.find_element(By.CSS_SELECTOR, "#su").click()

# 关闭浏览器
driver.quit()

这段代码的基本含义就是打开浏览器,找到输入框,输入值,搜索,然后关闭,关于详细内容后续再进行更多的讲解

selenium的工作原理

实现web的自动化测试需要浏览器,浏览器驱动,selenium自动化脚本,那这三个模块是如何进行搭配使用的呢?

在这里插入图片描述
使用selenium编写的自动化脚本代码,会在ChromeDriverService中创建一个服务,之后通过这个服务来打开webdriver,安装在本地的驱动服务,之后会发送一个Http的请求,发送请求后浏览器驱动程序就会解析请求,然后打开浏览器,获取sessionID

之后所有的selenium的操作都会通过这个连接好的服务链接到webdriver,然后使用execute来进行请求的发送,之后驱动收到请求后对于请求进行解析,转换成浏览器可以解析的脚本并发送给浏览器,浏览器通过请求的内容进行操作

浏览器把执行的结果通关浏览器驱动程序返回给测试脚本

selenium的常用函数

元素定位

web自动化测试的操作核心,就是能够找到页面对应的元素,然后就能对于元素进行具体的操作,那如何进行元素的定位?常用的定位方式有cssSelector和xpath

cssSelector

这个是选择器,它的主要功能是可以选中页面中指定的标签元素,选择器的种类有基础选择器和复合选择器,常见的元素定位方式有ID选择器和子类选择器来进行定位

利用定位工具进行定位:

在这里插入图片描述
在这里插入图片描述
此时就可以获得这个选择器的值是多少

xpath

在XML路径语言,不仅可以在XML文件中查找信息,还可以在HTML中选择节点

xpath使用路径表达式来选择xml文档中的节点

在这里插入图片描述

下面讲述xpath的规则:

  1. 获取HTML网页所有的节点://*
  2. 获取HTML网页指定的节点://[指定节点]
  3. 获取一个节点中的直接子节点:/
  4. 获取一个节点的父节点:..
  5. 实现节点属性的匹配:[@...]

操作测试对象

获取到了页面的元素之后,下一步是对于元素进行操作,常见的操作有点击,提交,输入,清除,获取文本

  1. 点击:click()
  2. 模拟输入:send_keys(“”)
  3. 清除文本内容:clear()
  4. 获取文本信息:text
  5. 获取页面标题:title
  6. 获取页面URL:current_url

窗口

对于窗口来说,常用的操作有:

  1. 切换窗口
  2. 窗口大小设置
  3. 屏幕识图

弹窗

弹窗在页面中是没有任何元素的,处理的方式可以使用selenium提供的alert接口

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

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

相关文章

010-GeoGebra基础篇-动态验证三角形外接圆的圆心是否可以位于三角形的外部

接下来我们将进行一些稍微高级一点操作,一边学习新东西的同时,也开始对数学、物理等内容的研究。 目录 一、项目截图二、涉及内容三、问题设置1. 问题提出2. 验证方案 三、做图步骤1. 绘制定点A、B;2. 绘制动点C;(1&am…

mysql-5.6.26-winx64免安装版本

mysql为什么要使用免安装 MySQL 提供免安装版本主要有以下几个原因和优势: 便捷性:用户无需经历安装过程,直接解压即可使用。这对于需要快速部署环境或者在不支持安装权限的系统上使用MySQL非常有用。灵活性:免安装版允许用户将…

马斯克公布xAI Grok-2大语言模型将于8月推出;GPT-5仍需时日

🦉 AI新闻 🚀 马斯克公布xAI Grok-2大语言模型将于8月推出 摘要:7月1日,马斯克在X平台宣布,其人工智能初创公司xAI的新大语言模型Grok-2将于8月推出。此前,xAI已发布了Grok-1.5和Grok-1.5 Vision模型。马…

C#/WPF 自制白板工具

随着电子屏幕技术的发展&#xff0c;普通的黑板已不再适用现在的教学和演示环境&#xff0c;电子白板应运而生。本篇使用WPF开发了一个电子白板工具&#xff0c;功能丰富&#xff0c;非常使用日常免费使用&#xff0c;或者进行再次开发。 示例代码如下&#xff1a; Stack<St…

杨万里,诚斋体的开创者

杨万里&#xff0c;字廷秀&#xff0c;号诚斋&#xff0c;生于南宋绍兴元年&#xff08;公元1127年&#xff09;&#xff0c;卒于南宋庆元二年&#xff08;公元1206年&#xff09;&#xff0c;享年79岁。在中国古代文学的璀璨星河中&#xff0c;南宋诗人杨万里以其清新脱俗、贴…

方案论证项目实现功能

文章目录 1. 场景加载2. 3D 模型2.1. 坐标转换2.2. 放置模型2.3. 调整模型2.4. 提交方案 3. 查看方案3.1. 场景还原3.2. 删除 1. 场景加载 加载Cesium的Melbourne Photogrammetry的倾斜摄影作为底图&#xff0c;本身是贴地的&#xff0c;使用 Cesium 的primitives功能加载特定…

函数---逆序输出

数字的逆序输出 记住&#xff1a; n n * 10 number % 10; number number / 10; #include <stdio.h> # include <math.h>unsigned int reverse( unsigned int number );int main() {unsigned int n;scanf("%u", &n);printf("%u\n", r…

【JVM】JVM 内存结构

程序计数器 Cpu 要不停的切换执行线程&#xff0c;所以在切换回同一个线程的时候要知道程序执行到哪了&#xff0c;程序计数器&#xff08;PC 计数器&#xff09;&#xff0c;用来存储指向下一条指令的地址&#xff0c;也就是将要执行的代码。 程序的分支、循环、跳转、异常处…

Android12 MultiMedia框架之MediaExtractorService

上节学到setDataSource()时会创建各种Source&#xff0c;source用来读取音视频源文件&#xff0c;读取到之后需要demux出音、视频、字幕数据流&#xff0c;然后再送去解码。那么负责进行demux功能的media extractor模块是在什么时候阶段创建的&#xff1f;这里暂时不考虑APP创建…

6 月份获得了 10000 星的开源项目!

01 开源学习资源的宝库 在这个信息爆炸的时代&#xff0c;想要深入学习一项技术&#xff0c;却常常被海量资源淹没。别担心&#xff0c;Build Your Own X 项目来帮你&#xff01; 这是一个集合了各种技术主题的开源学习资源库&#xff0c;旨在引导开发者通过实践来掌握核心概念…

提升入住率|智慧酒店解决方案,打造有温度的居住体验!

近年来&#xff0c;智慧酒店被越来越多的人关注&#xff0c;由生物识别、物联网技术和互联网技术融合产生的智慧酒店解决方案&#xff0c;不仅可以提升顾客在酒店的入住体验&#xff0c;还可以帮助酒店降低运营成本&#xff0c;这也让越来越的酒店选择了智慧酒店的赛道&#xf…

【windows|012】光猫、路由器、交换机详解

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 ​ &#x1f3c5;阿里云ACE认证高级工程师 ​ &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社…

CV每日论文--2024.6.28

1、On Scaling Up 3D Gaussian Splatting Training 中文标题&#xff1a;扩展 3D 高斯泼溅训练 简介&#xff1a;3D高斯点描(3DGS)由于其卓越的视觉质量和渲染速度,越来越受欢迎用于3D重建。然而,3DGS的训练目前仅在单个GPU上进行,由于内存限制,它的处理高分辨率和大规模3D重建…

基于C语言+控制台的学生信息管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、Php、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

Python:Python环境搭建

二、Python环境搭建 1.Python安装指南 &#xff08;1&#xff09;打开文件夹双击python-3.8.5-amd64.exe&#xff0c;进入安装页面&#xff0c;选择自定义安装&#xff0c;并且勾选环境变量。 &#xff08;2&#xff09;自定义安装时&#xff0c;跳出窗口&#xff0c;所有功能…

大力出奇迹:大语言模型的崛起与挑战

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现与应用&#xff0c;彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…

IPIDEA代理IP助力高效数据采集

IPIDEA代理IP助力高效数据采集 文章目录 IPIDEA代理IP助力高效数据采集&#x1f4d1;前言一、爬虫数据采集痛点二、代理IP解决爬虫痛点2.1 为什么可以2.2 选择代理IP的关键因素 三、IPIDEA海外IP代理的优势3.1 IPIDEA的显著优势3.2 IPIDEA的代理类型及应用 四、IPIDEA爬虫实战4…

复分析——第10章——Θ函数应用(E.M. Stein R. Shakarchi)

第10章 Θ函数的应用 (Applications of Theta Functions) The problem of the representation of an integer n as the sum of a given number k of integral squares is one of the most celebrated in the theory of numbers. Its history may be traced back to Diopha…

JS逆向技巧总结

总的来说&#xff0c;JavaScript 逆向可以分为三大部分&#xff1a;寻找入口、调试分析和模拟执行。下面分别进行介绍。 一&#xff0c;寻找入口 一个网站加载了很多 JavaScript 文件&#xff0c;那么怎么从这么多 JavaScript 里面找到关键的位置&#xff0c;那就是一个关键问…

Outlook发送大文件的问题是什么?怎么解决?

Outlook不仅是一款电子邮件客户端&#xff0c;还包括日历、任务、笔记、联系人等功能&#xff0c;同时与Microsoft Office套件中的其他应用程序&#xff08;如Word、Excel、PowerPoint等&#xff09;集成紧密&#xff0c;方便用户在不同应用程序之间切换&#xff0c;提高工作效…