自动化测试API【软件测试】

news2025/1/15 16:30:05

自动化测试

selenium

1. 为什么使用selenium?

  1. 开源免费
  2. 支持多浏览器
  3. 支持多系统
  4. 支持多语言编程
  5. 提供了丰富的web自动化测试API

2. API

  1. 查找页面元素

find Element()
find Elements()

  1. 元素定位的方式

xpath
selector
通常情况下,不需要手动来编写xpath或者selector,选择页面元素后复制粘贴
自动化里要求元素的定位必须是唯一,如果复制出来的元素在页面不唯一,需要手动的进行小范围的修改

  1. 常见的元素的操作
    对元素的操作前提:能够找到元素
    • 输入文本 sendKeys(仅适用于文本字段和内容可编辑的元素,如果反向操作代码也不会报错)
      在这里插入图片描述

    • 点击 click
      在这里插入图片描述

    • 提交 submit(通过回车键提交)selenium官方不推荐使用submit
      仅适用于表单元素

    • 清除 clear
      频繁测试输入框是否可以重复输入

    • 获取文本 getText
      通过getText()方法获取不到百度页面 按钮上的”百度一下“文字,这是为什么?
      区分文本属性
      在这里插入图片描述

    • 获取属性对应的值 getAttribute

    • 获取标题和URL getTitle getCurrentUrl

System.out.println(driver.getTitle());
System.out.println(driver.getCurrentUrl());
  1. 窗口

    • 窗口大小的设置:最大化、最小化、全屏窗口、手动设置窗口大小
      在这里插入图片描述
      全屏的时候,电脑会提示esc退出,但是窗口最大化不会

    • 窗口的切换
      问题1:打开百度首页,点击图片超链接进入到百度图片首页,获取百度图片页面的”百度一下“按钮,结果报错?
      在这里插入图片描述
      当浏览器每次打开一个标签页的时候,会自动的给每个标签页进行标识(句柄
      在这里插入图片描述
      问题2:那么怎么区分哪个是百度首页的句柄?哪个是百度图片首页的句柄?
      在这里插入图片描述
      问题3:如何跳转到百度首页的句柄?
      在这里插入图片描述
      问题4:当我们打开了好几个窗口,怎么切换呢?
      自动化基本没有这样的场景~

    • 屏幕截图
      在这里插入图片描述
      问题1:当代码执行到查找结果页的元素时候,页面还没有加载完全。
      程序执行的速度 和 页面渲染的速度 谁快?(当然是程序执行速度)
      所以当程序执行的时候我们需要在代码里面添加等待机制
      问题2:当文件名为固定格式(已经存在重名的文件),程序多次执行生成的图片文件会被同名覆盖
      这时可以将文件名的命名添加动态数据(时间戳)

  2. 执行脚本
    executeScript() 参数:js代码

  3. 等待

    • 强制等待(程序阻塞进行)Thread.sleep()
      会用到,但是自动化里不能用的特别多。每一个自动化方法就是一个自动化测试用例。只能接受十几秒或者几分钟之内

    • 隐式等待
      在这里插入图片描述
      隐式等待会作用于driver的整个生命周期,会一直轮询判断元素是否存在,如果不存在就等待设置好的时间里不断的进行轮询,直到元素能够被找到。

    • 显示等待

WebDriverWait(WebDriver,Duration)

在这里插入图片描述

  1. 浏览器的操作
    浏览器的前进、后退、刷新
    在这里插入图片描述

  2. 弹窗
    处理弹窗的步骤:
    (1)将driver对象作用到弹窗上(切换到弹窗)driver.switchTo.alert()
    (2)选择确认(accept())/取消(dismiss())(提示弹窗多了一个输入文本sendKeys()
    虽然警告弹窗只有确认按钮,注意:accept和dismiss都能处理
    虽然警告弹窗和确认弹窗都没有输入文本的地方,但如果要执行alert.sendKeys代码也不会报错~~

  3. 选择器
    选项的选择方式
    (1)根据文本来选择

// 先创建选择框对象
Select select = new Select(ele);
// 根据文本来选择
select.selectByVisibleText("UPS Next Day Air ⇒ $12.51");

(2)根据属性值来选择

// 根据属性值来选择
select.selectByValue("12.51");

(3)根据序号来选择
序号是从0开始

// 根据序号来选择
select.selectByIndex(1);
  1. 文件上传
sendKeys("文件路径 + 文件")
  1. 浏览器参数
    实际在工作中,测试人员将自动化部署在机器上自动的执行,测试人员不会每次都一直盯着自动化执行的过程,而是直接查看自动化执行的结果。
    • 无头模式
      在这里插入图片描述
      浏览器的参数设置需要在创建浏览器对象之前

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

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

相关文章

Learn Prompt-经验法则

还记得我们在“基础用法”当中提到的三个经验法则吗? 尝试提示的多种表述以获得最佳结果使用清晰简短的提示,避免不必要的词语减少不精确的描述 现在经过了几页的学习,我认为是时候引入一些新的原则了。 3. 一个话题对应一个chat​ ChatG…

Kafka开篇

前言 从本篇开始对个人Kafka学习做一个总结, 目标有这么几个。 从概念架构角度, 对消息中间件形成概要认知;从使用角度, 掌握其常见用法;从性能角度, 探究其高性能实现机制; 消息中间件的用途 从消息生产和消费的角度, 平衡消费者和消费者的速率差。基于该点可以做到削峰填…

白炽灯对新生儿视力有影响吗?推荐专业的儿童台灯

大家都知道婴儿还在成长发育的重要阶段,身体各方面都是比较脆弱的,对外界事务的感知也很敏感,一点点的刺激都会影响的婴儿。而白炽灯是否适合婴儿使用这个问题,我的建议是尽量不要用白炽灯。 因为白炽灯光线不是很柔和&#xff0c…

周易算卦流程c++实现

代码 #include<iostream> using namespace std; #include<vector> #include<cstdlib> #include<ctime> #include<Windows.h>int huaYiXiangLiang(int all, int& left) {Sleep(3000);srand(time(0));left rand() % all 1;while (true) {if…

许可分析 license分析 第十二章

许可分析是指对软件许可证进行详细的分析和评估&#xff0c;以了解组织内部对软件许可的需求和使用情况。通过许可分析&#xff0c;可以帮助组织更好地管理和优化软件许可证的使用。以下是一些可能的许可分析方法和步骤&#xff1a; 软件许可证的分配和使用权限&#xff1a;制定…

01Spring的Ioc思想和依赖注入手段(DI)

传统方式创建对象的缺陷 连接MySQL实现登录功能 控制层UserController public class UserController {//多态,半面向接口编程private UserService userService new UserServiceImpl();public void login(){String username "admin";String password "1234…

基于 Zookeeper 实现分布式锁

文章目录 前言声明前置知识分布式锁设计原则Zookeeper 分布式锁实现Curator框架实现分布式锁总结 前言 在分布式系统中&#xff0c;确保数据的一致性和避免冲突是一个核心问题&#xff0c;通常我们通过分布式锁来解决&#xff0c;分布式锁本质是一种同步机制&#xff0c;用于控…

【AI】机器学习——支持向量机(线性模型)

支持向量机是一种二分类算法&#xff0c;通过在高维空间中构建超平面实现对样本的分类 文章目录 5.1 SVM概述5.1.1 分类 5.2 线性可分SVM5.2.1 线性可分SVM基本思想5.2.2 策略函数间隔几何间隔硬间隔最大化 5.2.3 原始算法支持向量 5.2.4 对偶形式算法1. 构造并求解对偶问题2. …

【小沐学CAD】嵌入式UI开发工具:GL Studio

文章目录 1、简介2、软件功能3、应用行业3.1 航空3.2 汽车3.3 防御3.4 工业3.5 电力与能源3.6 医疗3.7 空间3.8 科技 结语 1、简介 https://disti.com/gl-studio/ DiSTI 是 HMI 软件、虚拟驾驶舱、仪表、信息娱乐、集群显示器和嵌入式 UI 解决方案的领先提供商。 而它的GL Stu…

kubernetes部署(kubeadmin)

文章目录 1.环境准备2. 安装dokcer3.部署cri-docker4.各个节点安装kubeadm等5.整合kubelet和cri-dockerd配置cri-dockerd配置kubelet 6.初始化集群 1.环境准备 环境和软件版本 OS : ubuntu 20.04 container runtime: docker CE 20.10.22 kubernetes 1.24.17 CRI&#xff1a;cr…

atoi函数

介绍&#xff1a; 头文件: <stdlib.h> 此函数的功能是将数字字符的字符串转化为字面上的整型返回。 例如&#xff1a; char arr1[] "-12"; char arr2[] "12"; char arr3[] " -12"; char arr4[] "-12a";使用atoi 我们…

Postman的高级用法一:重新认识postman核心模块

本请求示例来自于免费天气API&#xff1a; 实况天气接口API开发指南 未来一天天气预报api - 天气API 关于Postman的核心模块 全局变量请求接口请求体预处理脚本 类似beforeTest&#xff0c;在发起请求前的预执行逻辑&#xff0c;通常是生成一些动态变量值 测试用例模块 测试者…

RK3399平台开发系列讲解(入门篇)VIM的基础命令

🚀返回专栏总目录 文章目录 一、Vim 命令速查二、其他命令三、Vim模式沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍Vim相关命令。 一、Vim 命令速查 简单说明一下,这张图上展示了一个键盘。图中的“•”表示,单个字母不是完整的命令,必须再有进一步…

MFC使用MScomm32.ocx控件实现串口通信

文章目录 建立项目添加MSCOMM控件变量串口的打开和关闭串口发送和接收数据数据接收数据发送16进制数据的收发转换函数数据发送数据接收项目下载地址首先电脑应该有MSCOMM32.OCX并注册 建立项目 使用VS2005新建一个基于对话框的MFC项,在资源视图,右键窗体,插入ActiveX控件,…

基于Questasim的SystemVerilog DPI使用流程

1. 前言 DPI是Direct Programming Interface的缩写&#xff0c;它提供了SystemVerilog与其它编程语言(特别是C语言)交互的接口。它允许编程人员轻松地从SystemVerilog调用C函数&#xff0c;且在C函数也可以调用Systemverilog的函数。 DPI极大地方便了使用现有的C代码&#xf…

SpaceX预计到2022年Starlink用户将达到2000万,但最终达到了100万

SpaceX的Starlink部门还没有接近实现客户和收入的预测&#xff0c;该公司在建立卫星网络之前与投资者分享了这一点华尔街日报报道今天出版。 据报道&#xff0c;2015年的一份题为“SpaceX用来从投资者那里筹集资金”的报告预计&#xff0c;到2022年&#xff0c;Starlink的订户…

Linux安装RocketMQ

又又又....Linux裝RocketMQ。 vim命令找不到 rootlocalhost ~]# sudo vim sudo: vim&#xff1a;找不到命令 [rootlocalhost ~]# sudo yum install vim 已加载插件&#xff1a;fastestmirrorFile contains no section headers. file: file:///etc/yum.repos.d/mysql-communit…

Linux网络配置:最佳指南

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

CSS核心使用

CSS核心使用 box-sizingbox-shdowtext-shadowpositionwriting-mode box-sizing 定义计算一个元素的总高度和总宽度. 属性值 content-box 默认值,width 内容宽度,height内容的高度border-box 宽度和高度包含内容,内边距和边框 widthborderpadding内容宽度, heightborderpaddi…

嵌入式:驱动开发 Day4

作业&#xff1a;通过字符设备驱动分步注册方式编写LED驱动&#xff0c;完成设备文件和设备的绑定 驱动程序&#xff1a;myled.c #include <linux/init.h> #include <linux/module.h> #include <linux/cdev.h> #include <linux/fs.h> #include <l…