测试第三课-------自动化测试相关

news2025/5/11 19:58:18

作者前言

🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂
​🎂 作者介绍: 🎂🎂
🎂 🎉🎉🎉🎉🎉🎉🎉 🎂
🎂作者id:老秦包你会, 🎂
简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
喜欢学习C语言、C++和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 🎂🎂🎂🎂🎂🎂🎂🎂
🎂个人主页::小小页面🎂
🎂gitee页面:秦大大🎂
🎂🎂🎂🎂🎂🎂🎂🎂
🎂 一个爱分享的小博主 欢迎小可爱们前来借鉴🎂


自动化相关

  • **作者前言**
  • 元素定位方法
    • CSS selector
    • 通过xpath
    • 对测试对象进行操作
      • 点击
      • 模拟输入
      • 清除⽂本内容
      • 获取文本
      • 获取当前⻚⾯标题
      • 获取当前页面的url
      • get_attribute("属性名称")
    • 窗口
      • 窗口的大小
      • 屏幕截图
      • 关闭当前的窗口
    • 弹窗
    • 等待
      • 强制等待
      • 隐式等待
      • 显示等待
    • 浏览器导航
    • 文件上传

元素定位方法

CSS selector

在上一篇的文章中,写了一个简单自动化脚本,这个使用到的元素定位就是这个,需要我们打开浏览器,按下F12进入开发者工具,
如图:
在这里插入图片描述
然后选择其中的一个标签,复制对应的css selector

通过xpath

这里的话也是跟上面的获取方式是一样的,复制对应的xpath来
获取HTML⻚⾯所有的节点
//*
获取HTML⻚⾯指定的节点
//[指定节点]
//ul :获取HTML⻚⾯所有的ul节点
//input:获取HTML⻚⾯所有的input节点
获取⼀个节点中的直接⼦节点
/
//span/input
获取⼀个节点的⽗节点

//input/… 获取input节点的⽗节点
实现节点属性的匹配
[@…]
//*[@id=‘kw’] 匹配HTML⻚⾯中id属性为kw的节点

对测试对象进行操作

点击

click()

在这里插入图片描述

模拟输入

send_keys("")

在这里插入图片描述

清除⽂本内容

clear()

在这里插入图片描述

获取文本

text

在这里插入图片描述

获取当前⻚⾯标题

title

在这里插入图片描述

获取当前页面的url

current_url

在这里插入图片描述

get_attribute(“属性名称”)

获取标签的属性值

窗口

在测试的过程中,不仅仅是单独在一个页面进行测试,也有可能页面跳转进行测试,当页面跳转的时候,就需要我们切换窗口了。
方法如下:
获取当前的窗口句柄

driver.current_window_handle

获取全部窗口的句柄

driver.window_handles

切换窗口句柄

driver.switch_to.window(某个句柄)

窗口的大小

# 设置窗口的大小
chromeDriver.maximize_window()# 最大化
time.sleep(3)
chromeDriver.minimize_window()# 最小化
time.sleep(3)
chromeDriver.set_window_size(200,200)# 设置窗口的大小
time.sleep(3)
chromeDriver.fullscreen_window()# 全屏相当于快捷键f11

屏幕截图

driver.save_screenshot('../images/image.png')# 参数是保存图片的名称

虽然截图好用,但是保存的路径却是一个疼伤,文件名必须不一样,这就让我们想到是否可以使用时间来进行命名,时间每一秒都是不一样的,我们可以借助本地时间来进行命名
这里就需要使用到datetime模块中的now对象,

datetime.now()# 创建一个当前时间的对象

如图:
在这里插入图片描述
输出的样式不符合文件的命名规则,我们还需要使用到里面的now类方式

datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S')

可以把格式转换成对应的格式

关闭当前的窗口

driver.close()

如果涉及到窗口的切换,还需要进行一定要进行窗口句柄的切换。否则会报错

弹窗

弹窗是在⻚⾯是找不到任何元素的,这种情况怎么处理?使⽤selenium提供的Alert接⼝
弹窗一般分为警告弹窗,提示弹窗以及确认弹窗。
警告弹窗:
在这里插入图片描述

确认弹窗:
在这里插入图片描述

提示弹窗:

在这里插入图片描述
要对弹窗进行操作,就要先定位到弹窗**,注意:必须触发弹窗**

alert = driver.switchTo.alert # 定位到弹窗

这里和切换到句柄不是一个样子,接下来我们可以对弹窗进行点击或者输入内容,

#确认
alert.accept()
#取消
alert.dismiss()
#输入内容
alert.send_keys("hello")

等待

强制等待

等待分为强制等待和隐式等待以及显示等待
其中强制等待虽然使用起来简单,但是效率低,等待够时间才能运行后面的代码
代码如下:

time.sleep(5)

不建议写

隐式等待

隐式等待是⼀种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码继续执⾏,直到超时没找到元素才会报错。

driver.implicitly_wait(5)

隐式等待的话,在规定时间内找到对应的元素就会执行后面的代码,这在某些情况下,节约了很多不必要的时间浪费。
隐式等待作⽤域是整个脚本的所有元素。即只要driver对象没有被释放掉( driver.quit() ),隐
式等待就⼀直⽣效。

显示等待

相对于隐式等待针对的是全局,显示等待的话,作用于局部

WebDriverWait(driver,sec).until(functions)

导入必要的模块:
你需要导入 WebDriverWait 和 expected_conditions 模块。

创建 WebDriverWait 对象:
设定最大等待时间和要等待的条件。

使用等待条件(funtion):
例如,等待元素可见、可点击等
涉及到selenium.support.ui.ExpectedConditions包下的 ExpectedConditions类
ExpectedConditions方法
进行判断该元素是否存在等,不存在就会报错
导入模块

from selenium.webdriver.support import expected_conditions

在这里插入图片描述
使用显示等待的好处:
能解决隐式等待无法解决的问题,例如等待弹窗,弹窗在页面中无法找到,隐式等待就会失效,

# 点击百度一下
chromeDriver.find_element(By.ID,"su").click()
# 显示等待,并判断元素是否存在
WebDriverWait(chromeDriver,10).until(expected_conditions.invisibility_of_element((By.CSS_SELECTOR,r"#\31  > div > div.cosc-card > div > div > h3 > a")))
time.sleep(3)
chromeDriver.find_element(By.CSS_SELECTOR,r"#\31  > div > div.cosc-card > div > div > h3 > a").click()

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

注意:
显示等待和隐式等待不能混用,但是强制等待可以

浏览器导航

打开⽹站

driver.get("https://tool.lu/")

浏览器的前进、后退、刷新

driver.back()
driver.forward()
driver.refresh()

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

文件上传

点击⽂件上传的场景下会弹窗系统窗⼝,进⾏⽂件的选择。selenium⽆法识别⾮web的控件,上传⽂件窗⼝为系统⾃带,⽆法识别窗⼝元素,但是可以使⽤sendkeys来上传指定路径的⽂件,达到的效果是⼀样的

driver.get("file:///D:/file/%E6%AF%94%E7%89%B9%E6%95%99%E5%8A%A1/%E6%B5%8B%E8%A
F%95/selenium4html/selenium-html/upload.html")
ele = driver.find_element(By.CSS_SELECTOR,"body > div > div >
input[type=file]")
ele.send_keys("D:\\file\\test.txt")

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

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

相关文章

ebpf: CO-RE, BTF, and Libbpf(二)

本文内容主要来源于Learning eBPF,可阅读原文了解更全面的内容。 本文涉及源码也来自于书中对应的github:https://github.com/lizrice/learning-ebpf/ 概述 上篇文章主要讲了CO-RE最关键的一环:BTF,了解其如何记录内核中的数据结…

祁连山国家公园shp格式数据

地理位置 祁连山国家公园位于中国西北部,横跨甘肃省与青海省交界处,主体处于青藏高原东北边缘。总面积约5.02万平方公里,是中国首批设立的10个国家公园之一。 设立背景 保护措施 文化与历史 旅游与教育 意义与挑战 祁连山国家公园的设立标志…

《AI大模型应知应会100篇》 第16篇:AI安全与对齐:大模型的灵魂工程

第16篇:AI安全与对齐:大模型的灵魂工程 摘要 在人工智能技术飞速发展的今天,大型语言模型(LLM)已经成为推动社会进步的重要工具。然而,随着这些模型能力的增强,如何确保它们的行为符合人类的期…

探索QEMU-KVM虚拟化:麒麟系统下传统与云镜像创建虚拟机的最佳实践

随着云计算和虚拟化技术的不断进步,虚拟化在管理服务器、隔离资源以及提升性能方面的好处越来越明显。麒麟操作系统Kylin OS是我们国家自己开发的操作系统,在政府机构和企业中用得很多。这篇文章会教你如何在麒麟操作系统上设置QEMU-KVM虚拟化环境&#…

[ComfyUI] 最新控制模型EasyControl,吉卜力风格一键转绘

一、EasyControl介绍 玩ComfyUI的都知道Controlnet的重要性,可以根据约束来引导图片的生成,这也是ComfyUI商业化里面很重要的一环。 不过之前我们用的Controlnet都是基于Unet技术框架下的。 最近出的这个EasyControl有点不一样,是基于DiT&a…

LR(0)

LR0就是当我处在自动机为红色这些结束状态的时候,这些红色状态就代表我们识别到了一个句柄,那现在的问题就是识别到了句柄,那要不要对他进行归约?LR0就是我不管当前指针指向的终结符是什么,我都拿它做规约 这里的二号状…

无人船 | 图解基于视线引导(LOS)的无人艇制导算法

目录 1 视线引导法介绍2 LOS制导原理推导3 Lyapunov稳定性分析4 LOS制导效果 1 视线引导法介绍 视线引导法(Line of Sight, LOS)作为无人水面艇(USV)自主导航领域的核心技术,通过几何制导与动态控制深度融合的机制&am…

3.2.2.3 Spring Boot配置拦截器

在Spring Boot应用中配置拦截器(Interceptor)可以对请求进行预处理和后处理,实现如权限检查、日志记录等功能。通过实现HandlerInterceptor接口并注册到Spring容器,拦截器可以自动应用到匹配的请求路径。案例中,创建了…

大模型文生图

提示词分4个部分:质量,主体,元素,风格 质量:杰作,高质量,超细节,完美的精度,高分辨率,大师级的; 权重:把图片加括号,&am…

LeetCode 118题解 | 杨辉三角

题目链接: https://leetcode.cn/problems/pascals-triangle/description/ 题目如下: 解题过程如下: 杨辉三角就是一个不规则的二维数组,实际上是一个直角三角形。如图所示: 杨辉三角特点:每一行的第一个和最后一个都是…

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解 Pod 结构 每个 Pod 中都可以包含一个或者多个容器,这些容器可以分为两类 用户程序所在的容器,数量可多可少Pause 容器,这是每个 Pod 都会有的一个根容器,它的作用有两个 可…

数据库索引深度解析:原理、类型与高效使用实践

🧠 一句话理解索引是什么? 索引就是数据库中的“目录”或“书签”,它能帮助我们快速找到数据的位置,而不是一页页地翻整本书。 🧩 一、为什么需要索引?(用生活化例子秒懂) 想象你在…

React 记账本项目实战:多页面路由、Context 全局

在本文中,我们将分享一个使用 React 开发的「记账本」项目的实战经验。该项目通过 VS Code 完成,包含首页、添加记录页、编辑页等多个功能页面,采用了 React Router 实现路由导航,使用 Context API 管理全局的交易记录状态,并引入数据可视化组件呈现不同月份的支出情况。项…

易路iBuilder智能体平台:人力资源领域AI落地,给“数据权限管控”一个最优解

近日,加拿大电子商务巨头Shopify的CEO Tobias Ltke分享了一份内部备忘录,明确表示有效使用AI已成为公司对每位员工的基本期望,并指出:各团队在招募新员工前,必须先确定是否能够利用AI完成工作。 而在全球范围内&#…

mybatis--多对一处理/一对多处理

多对一处理(association) 多个学生对一个老师 对于学生这边,关联:多个学生,关联一个老师[多对一] 对于老师而言,集合,一个老师有多个学生【一对多】 SQL: 测试环境搭建 1.导入依…

计算机视觉——图像金字塔与目标图像边缘检测原理与实践

一、两个图像块之间的相似性或距离度量 1.1 平方差和(SSD) 平方差和(SSD) 是一种常用的图像相似性度量方法。它通过计算两个图像在每个对应位置的像素值差的平方和来衡量两个图像之间的整体差异。如果两个图像在每个位置的像素值…

VRoid-Blender-Unity个人工作流笔记

流程 VRoid 选配模型>减面、减材质>导出vrm Blender(先有CATS、vrm插件) 导入vrm>Fix model>修骨骼>导出fbx Unity 找回贴图、改着色器、调着色器参数…… VRoid 减面 以模型不出现明显棱角为准。脸好像减面100也问题不大。 下…

Domain Adaptation领域自适应

背景与问题定义 传统监督学习假设:训练集与测试集数据分布一致。 Domain Shift:测试数据分布与训练数据不同,模型泛化性能骤降 。 例如在黑白图像上训练数字分类器,测试时用彩色图像,准确率骤降。 Domain Adaptatio…

从自动测量、8D响应到供应链协同的全链路质量管理数字化方案——全星QMS如何破解汽车行业质量困局

全星QMS如何破解汽车行业质量困局:从自动测量、8D响应到供应链协同的全链路数字化方案 在当今竞争激烈的市场环境中,企业要想脱颖而出,必须确保产品质量的稳定性和可靠性。 全星质量QMS软件系统凭借其强大的功能和灵活的架构,为企…

联想电脑开机出现Defalut Boot Device Missing or Boot Failed怎么办

目录 一、恢复bios默认设置 二、关机重启 三、“物理”方法 在图书馆敲代码时,去吃了午饭回来发现刚开机就出现了下图的问题(崩溃),想起之前也发生过一次 这样的问题,现在把我用到的方法写在下面,可能对…