【软件测试】自动化测试常用函数 二

目录

🌴等待

🚩强制等待

🚩隐式等待

🚩显示等待

🌳浏览器导航

🌲弹窗

🚩警告弹窗+确认弹窗

🚩提示弹窗

🎄上传文件

🍀浏览器参数设置

🚩设置无头模式

🚩设置浏览器加载策略


🌴等待

首先由以下代码:百度搜索迪丽热巴后,在点击百度百科,使用选择器

执行结果:发现报错了,而且是说没有找到这个元素

那么这个元素不存在吗?我们查看一下 ,发现这个元素是真实存在的。

使用xpath:

执行结果:还是没有找到

注意:复制过来的选择器或者xpath,粘贴之后不能修改!

NoSuchElementException异常:

如果避免因为渲染过慢出现的自动化误报的问题呢?可以使用selenium中提供的三种等待方法:

🚩强制等待

Thread.sleep()   

代码:

执行结果:正常退出

使用xpath是一样的,这里不在过多演示。

该方法就是死等,()中的参数单位为毫秒,必须等到该时间之后才开始执行代码,也就是阻塞程序的方式来等待。

  • 优点:写法简单,好理解,直接阻塞程序执行
  • 缺点:极大的增加了自动化的执行时间

🚩隐式等待

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

implicitlyWait()   参数:Duration类中提供的毫秒、秒、分钟等方法

代码:隐式等待3s,表示使用隐式等待去查找元素,若元素在1s的时候查找到了,则不在继续等待,如何等待的呢?在3s之内,会轮询的查找元素。

源码:

执行结果:

隐式等待作用域是整个脚本的所有元素。即只要driver对象没有被释放掉(driver.quit()),隐式等待就一直生效。

例如上述代码,在隐式等待这行代码执行完成后,执行了点击"百度百科"操作,我们再清空迪丽热巴之后,再次搜索邓紫棋,且获取"邓紫棋"文本。

代码:

执行结果:要获取的是邓紫棋,然后返回的迪丽热巴

我们分别去查看"迪丽热巴"文本标签和"邓紫棋"文本标签,发现两个标签是一样的,也就是程序执行的速度太快了,隐式等待的作用只是看一下元素是否存在,而不是元素对不对,所以上述代码的隐式等待只会查找你的输入框,按钮,文本是否存在,对于点击,清空,输入不会管,当查找到"邓紫棋"文本标签时,"邓紫棋"还没有输入呢,这当然能找到,但是迪丽热巴的名字。

如何解决?在查找邓紫棋关键词之前强制等待3s,在这3s里claer,sendkeys都能执行完成。

  • 优点:智能等待,作用于全局
  • 缺点:只能查找元素,每次查找元素都要等待

🚩显示等待

显示等待也是一种智能等待,在指定超时时间范围内只要满足操作的条件就会继续执行后续代码

这里面有两个参数,第一个是驱动对象,第二个参数是要设置指定的超时时间,until是需要满足一个什么样的条件,是一个表达式。

$express:涉及到selenium.support.ui.ExpectedConditions包下的ExpectedConditions类

返回值:boolean

ExpectedConditions预定义方法的一些示例:

  • elementToBeClickable(By locator)‒用于检查元素是否可以点击,以便你可以单击它。是一个By类
  • textToBe (Bylocator, String str)-检查元素是否复合预期(精确匹配)。
  • presenceOfElementLocated(Bylocator)‒检查页面的元素是否存在。
  • urlToBe(java.lang.String url)‒检查当前页面的URL是一个特定的URL。

代码:检查元素是否可以点击

执行结果:

  • 优点:显示等待是智能等待,可以自定义显示等待的条件,操作灵活
  • 缺点:写法复杂,只能作用在当前条件上

代码:检查元素是否复合预期(查找百度首先"新闻"文本)

执行结果:匹配成功

隐式等待和显示等待一起使用效果如何呢?

代码:

执行结果:

结果:重试多次,最终打印的等待时间有10s、11s....

结论:注意混合隐式和显式等待,可能会导致不可预测的等待时间。

🌳浏览器导航

常见操作:

1)打开网站

driver.navigate().to("https://baidu.com/");

driver.get("https://baidu.com/");

2)浏览器前进,后退,刷新

driver.navigate().back();  =>前进

driver.navigate().forward();  =>后退 

driver.navigate().refresh();  =>刷新

🌲弹窗

弹窗是在页面是找不到任何元素的,这种情况怎么处理?使用selenium提供的Alert接口

🚩警告弹窗+确认弹窗

我们在网页上,点击了某个元素就会触发弹窗,然后再通过点击确认来关闭弹窗,若想通过页面元素的定位这个确认按钮,关闭这个弹窗,此时这个弹窗是无法定位的。

在selenium处理弹窗的方式:

由于driver是作用于网页上,不能作用于driver,所以先要切换弹窗

🚩提示弹窗

若有弹窗未处理会报一个异常,无法继续执行页面元素相关操作

处理弹窗:

🎄上传文件

点击文件上传的场景下会弹窗系统窗口,进行文件的选择。 selenium无法识别非web的控件,上传文件窗口为系统自带的,无法识别窗口元素,但是可以使用sendkeys来上传指定路径的文件,达到的效果是一样的。

代码:

执行结果:

🍀浏览器参数设置

🚩设置无头模式

简单来说,设置成无头模式,表示自动化程序在后台执行,不会打开浏览器页面,实际上是执行了的,只不过在当前电脑界面上看不到效果。上述我们所执行的代码,都是能看到浏览器页面的,当我们增加无头模式后,就看不到了

代码:

在工作中,运行自动化不会人工一直盯着自动化的执行效果,一般都是设置无头模式,通过自动化执行的结果来分析。

🚩设置浏览器加载策略

在有的情况下,可能会发现自己手动打开的网页加载非常快,但是通过自动化脚本代码打开的网页加载很慢,慢到等待都报错了。

增加浏览器的加载模式:有三种

代码:

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

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

相关文章

浅显易懂的Git教程

Git概述 SVN与Git的对比 SVN(Subversion) 类型:集中式版本控制系统 工作流程: 从中央服务器下载最新版本到本地。在本地进行开发。提交更改回中央服务器。 优点: 简单易用,适合小型团队。版本历史清…

Leetcode—环形链表||

题目描述 思路 快慢指针 结论 我们需要用到一个重要的结论:让一个指针从链表起始位置开始遍历链表,同时让一个指针从判环时相遇点的位置开始绕环运行,两个指针都是每次均走一步,最终肯定会在入口点的位置相遇。 画图解释 1.利用快慢指针找到相遇点 2. 定义两个…

医学数据分析实训 项目七 集成学习--空气质量指标--天气质量分析和预测

项目七:集成学习 实践目的 理解集成学习算法原理;熟悉并掌握常用集成学习算法的使用方法;熟悉模型性能评估的方法;掌握模型优化的方法。 实践平台 操作系统:Windows7及以上Python版本:3.8.x及以上集成开…

计算机网络(七) —— https协议与网络安全证书

目录 一,关于https 二,关于加密 2.1 明文,密钥 2.2 对称和非对称加密 2.3 数据摘要,数据指纹,数字签名 三,https过程过程探究 四,证书 4.1 CA认证 4.2 证书大致内容和申请流程 4.3 签…

Java-idea小锤子图标

这一版的idea小锤子图标其实就在这里 点进去就找到了~

计算机毕业设计 家电销售展示平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

面了智谱大模型算法岗,效率贼高!

最近这一两周不少互联网公司都已经开始秋招提前批面试了。不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解…

【linux-Day3】linux的基本指令<中>

【linux-Day3】linux的基本指令<中> linux下的基本指令&#x1f4e2;man&#xff1a;访问linux手册页&#x1f4e2;echo&#xff1a;把字符串写入指定文件中&#x1f4e2;cat&#xff1a;查看目标文件的内容&#x1f4e2;cp&#xff1a;复制文件或目录&#x1f4e2;mv&am…

根据 IP 地址进行 VPN 分流(详细,亲测,通用)

根据 IP 地址进行 VPN 分流&#xff08;详细&#xff0c;亲测&#xff0c;通用&#xff09; 背景 不在学校的时候需要使用实验室的服务器&#xff0c;但是实验室的服务器只能在校园网内访问&#xff0c;因此在校外就需要使用学校的 VPN&#xff0c;但是打开 VPN 以后会默认将…

Axure中后台管理信息系统通用原型方案

Axure中后台管理信息系统通用原型方案中的12套模板&#xff0c;旨在帮助开发者与设计师快速搭建出标准且美观的中后台产品原型&#xff0c;提升开发效率和节省协作成本。这些模板覆盖了多样化的中后台管理系统开发需求&#xff0c;具有高度的灵活性和可定制性。 以下是对这些模…

技术周总结 09.09~09.15周日(C# WinForm WPF 软件架构)

文章目录 一、09.09 周一1.1) 问题01: Windows桌面开发中&#xff0c;WPF和WinForm的区别和联系&#xff1f;联系&#xff1a;区别&#xff1a; 二、09.12 周四2.1&#xff09;问题01&#xff1a;visual studio的相关快捷键有哪些&#xff1f;通用快捷键编辑导航调试窗口管理 2…

论文解读《LaMP: When Large Language Models Meet Personalization》

引言&#xff1a;因为导师喊我围绕 “大语言模型的个性化、风格化生成” 展开研究&#xff0c;所以我就找相关论文&#xff0c;最后通过 ACL 官网找到这篇&#xff0c;感觉还不错&#xff0c;就开始解读吧&#xff01; “说是解读&#xff0c;其实大部分都是翻译哈哈哈&#x…

基于SSM的在线家用电器销售系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSSMVueMySQL的在线家…

传输层协议 —— UDP协议

目录 0.前言 1.UDP协议格式 16位源端口和目的端口 16位UDP长度 16位校验和 2.UDP协议特点 无连接 不可靠 面向数据报 3.UDP的缓冲区 0.前言 首先&#xff0c;我们得明确一点&#xff0c;网络模型是分层的。自底向上分别是物理层、数据链路层、网络层、传输层、应用层…

MODIS/Landsat/Sentinel下载教程详解【常用网站及方法枚举】

⛄前言 在当今快速发展的地球观测时代&#xff0c;遥感技术作为获取地球表面及其环境信息的重要手段&#xff0c;正以前所未有的广度和深度改变着我们对自然界的认知与管理方式。MODIS&#xff08;Moderate-resolution Imaging Spectroradiometer&#xff0c;中分辨率成像光谱…

unity安装配置和vs2022联动教程

目录 1.选择vs2022配置 2.安装unity 2.1安装unity hub 2.2注册个人账号 2.3安装编辑器 2.4修改为简体中文 2.5添加许可证 2.6安装位置修改 3.项目的创建 3.1如何创建 3.2如何选择 3.3配置语言 3.4去哪里找语言包 4.unity编辑器窗口的介绍 4.1游戏的运行和停止 4…

AI编程的特点及SCSAI平台在AI编程方面的一些思路

团长团 AI智造AI编程 2024年09月18日 18:25 北京 说先来看看AI编程的优缺点&#xff0c;然后我们再看看SCSAI在AI编程方面的一些可能选择 使用AI编程的优点 ‌AI编程的优点包括提升编程效率、降低编程门槛、优化程序结构、加强软件可靠性、促进跨领域融合&#xff0c;而缺点则…

JS落叶动画代码分析

秋天到了&#xff0c;秋高气爽的季节。我们来做一个落叶动画吧&#xff01;来迎接秋天的到来 文字可以更换。 1.目录如下 在线演示&#xff1a;点击我在线演示 images两张照片&#xff0c;首先&#xff0c;你得要准备一个vscode编辑器。和一个chorme浏览器或edge浏览器。 …

Qt常用控件——QLCDNumber

文章目录 QLCDNumber核心属性倒计时小程序倒计时小程序相关问题 QLCDNumber核心属性 QLCDNumber是专门用来显示数字的控件&#xff0c;类似于这样&#xff1a; 属性说明intValue获取的数字值(int).value获取的数字值(double)和intValue是联动的例如value设为1.5&#xff0c;in…

Kubernetes Ingress

文章目录 一、为什么需要 Ingress二、什么是Ingress,Ingress Controller三、Ingress 的工作原理四、Ingress 配置资源模版五、实例1、搭建 Ingress 环境1.1、Ingress-Nginx官网地址1.2、master 节点下载 deploy.yaml1.3、所有节点提前 pull 必须的镜像1.4、修改并应用 deploy.y…