软件测试教程 自动化测试selenium篇(二)
掌握Selenium常用的API的使用
目录
一、webdriver API
1.1元素的定位
1.2 id定位
1.3name 定位
1.4tag name 定位和class name 定位
1.5CSS 定位
1.6XPath 定位
1.7link text定位
1.8Partial link text 定位
二、操作测试对象
2.1鼠标点击与键盘输入
2.2submit 提交表单
2.3text 获取元素文本
2.4添加等待
2.4.1sleep休眠强制等待
2.4.2智能等待
2.4.2.1隐式等待
2.4.2.2显式等待
2.5打印信息
2.6获取元素对应的属性值
2.7浏览器的操作
2.7.1浏览器的前进
2.7.2浏览器的后退
2.7.3浏览器滚动条的操作
2.7.4浏览器最大化
2.8键盘事件
2.9鼠标事件
2.10定位一组元素
2.11多层框架的定位
2.12下拉框的处理
2.13alert、confirm、prompt 的处理
2.14上传文件的操作
三、补充操作
3.1关闭浏览器
3.2切换窗口
3.3截图操作
一、webdriver API
public class Main {public static void main(String[] args) {ChromeOptions options=new ChromeOptions();//参数表示允许所有请求options.addArguments("--remote-allow-origins=*");WebDriver webDriver=new ChromeDriver(options);//.get表示打开百度的首页webDriver.get("https://baidu.com");}
}
1.1元素的定位
对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。那么一个对象也有类似的属性,我们可以通过这些属性找到这对象。(通过代码找到要操作的元素)

webdriver 提供了一系列的对象定位方法,常用的有以下几种
- id
- name
- class name
- link text
- partial link text
- tag name
- xpath
- css selector
我们可以看到,一个百度的输入框,可以用这么多种方式去定位。
1.2 id定位
id是页面元素的属性,我们最常用元素定位方式,但是不是所有的元素都有id的。如果一个元素有id属性,那么一般在整个页面是唯一的。所以我们一般可以用id来唯一的定位到这个元素
通过前端工具,例如Chrome浏览器的F12,找到了百度输入框的属性信息,如下:

<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd"
autocomplete="off">
属性 id=”kw”通过find_element_by_id("kw") 函数就可以定位到百度输入框
1.3name 定位
如果这个元素有name,并且元素的name命名在整个页面是唯一的,那么我们可以用name来定位这个元素。用上面百度输入框的例子,其中元素的属性name=”wd”通过find_element_by_name("wd")函数同样也可以定位到百度输入框
1.4tag name 定位和class name 定位
从上面的百度输入框的属性信息中,我们看到,不单单只有id 和name 两个属性, 比如class 和tag
name(标签名)
input 就是一个标签的名字,可以通过find_element_by_tag_name("input") 函数来定位。
class="s_ipt",通过find_element_by_class_name("s_ipt")函数定位百度输入框。
在这里要注意的是,不是所有的元素用 tag name或者 class name来定位元素,首先要保证该元素的这两种属性在页面上是唯一的,才能够准确的定位。
1.5CSS 定位
CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML 和XML 文档的表现。
CSS 使用选择器来为页面元素绑定属性。这些选择器可以被selenium 用作另外的定位策略。
public class Main {public static void main(String[] args) {ChromeOptions options=new ChromeOptions();//参数表示允许所有请求options.addArguments("--remote-allow-origins=*");WebDriver webDriver=new ChromeDriver(options);//.get表示打开百度的首页webDriver.get("https://baidu.com");//定位元素:找到输入框WebElement element &相关文章:
软件测试教程 自动化测试selenium篇(二)
掌握Selenium常用的API的使用 目录 一、webdriver API 1.1元素的定位 1.2 id定位 1.3name 定位 1.4tag name 定位和class name 定位 1.5CSS 定位 1.6XPath 定位 1.7link text定位 1.8Partial link text 定位 二、操作测试对象 2.1鼠标点击与键盘输入 2.2submit 提交…...
JavaSE入门--初始Java
文章目录 Java语言概述认识Java的main函数main函数示例运行Java程序认识注释认识标识符认识关键字 前言: 我从今天开始步入Java的学习,希望自己的博客可以带动小白学习,也能获得大佬的指点,日后能互相学习进步,都能如尝…...
leetcode做题笔记160. 相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…...
数学建模Matlab之检验与相关性分析
只要做C题基本上都会用到相关性分析、一般性检验等! 回归模型性能检验 下面讲一下回归模型的性能评估指标,用来衡量模型预测的准确性。下面是每个指标的简单解释以及它们的应用情境: 1. MAPE (平均绝对百分比误差) 描述: 衡量模型预测的相对…...
微服务网关:Spring Cloud Zuul 升级 Spring Cloud Gateway 的核心要点
1. 服务路由 1.1. Zuul 接收请求: 在routes路由规则中,根据path去匹配,如果匹配中,就使用对应的路由规则进行请求转发如果无法从routes中匹配,则根据path用“/”去截取第一段作为服务名进行请求转发,转发…...
视频讲解|含可再生能源的热电联供型微网经济运行优化(含确定性和源荷随机两部分代码)
1 主要内容 该视频为《含可再生能源的热电联供型微网经济运行优化》代码讲解内容,对应的资源下载链接为考虑源荷不确定性的热电联供微网优化-王锐matlab(含视频讲解),对该程序进行了详尽的讲解,基本做到句句分析和讲解…...
3种等待方式,让你学会Selenium设置自动化等待测试脚本!
一、Selenium脚本为什么要设置等待方式?——即他的应用背景到底是什么 应用Selenium时,浏览器加载过程中无法立即显示对应的页面元素从而无法进行元素操作,需设置一定的等待时间去等待元素的出现。(简单来说,就是设置…...
[Spring] Spring5——AOP 简介
目录 一、AOP 简介 1、什么是 AOP 二、AOP 底层原理 1、动态代理原理 2、基于接口的 JDK 动态代理 3、基于继承的 CGLib 动态代理 三、底层原理实现—— JDK 动态代理 1、使用 Proxy 类的方法创建代理对象 2、JDK 动态代理示例 四、AOP 操作术语 1、连接点 2、切入…...
C/C++ 动态规划面试算法题
1.买卖股票的最佳时机 https://blog.csdn.net/qq_41277628/article/details/113322136 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 1)的时候买入,在第 5 天(股票价格 6ÿ…...
kafka伪集群部署,使用zookeeper模式
1:拉去管理kafka界面UI镜像 docker pull provectuslabs/kafka-ui2:拉去管理kafka镜像 docker pull bitnami/kafka3:docker-compose.yml version: 3.8 services:zookeeper-1:container_name: zookeeper1image: bitnami/zookeeperports:- "2181:2181"environment:- …...
Postgresql 主从复制+主从切换(流复制)
pgsql有多种主从复制方式,推荐的是流复制 一、前置条件 1.至少两个pgsql数据库(可以是一台设备上的两个) 可以参考下面的教程 pgsql编译安装:pgsql 编译安装(linux) pgsql单机多开:pgsql 单机…...
java获取字符串集合中每个字符并且组成一个新的集合实现
直接怼代码,刚好碰到了这种需求,也是想了可久,其实想想也还是挺简单的 public static void main(String[] args) { // 原始字符串集合 List<String> originalList new ArrayList<>(); originalList.add("Hello"); …...
结构型设计模式——外观模式
摘要 本文主要分析设计模式 - 结构型 - 外观(Facade),它提供了一个统一的接口,用来访问子系统中的一群接口,从而让子系统更容易使用。 一、外观模式的意图 提供了一个统一的接口,用来访问子系统中的一群接口,从而让…...
【算法学习】-【双指针】-【快乐数】
LeetCode原题链接:202. 快乐数 下面是题目描述: 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果…...
【Java-LangChain:使用 ChatGPT API 搭建系统-6】处理输入-链式 Prompt Chaining Prompts
第六章,处理输入-链式 Prompt Chaining Prompts 在本章中,我们将学习如何通过将复杂任务拆分为一系列简单的子任务来链接多个 Prompt。 您可能会想,为什么要将任务拆分为多个 Prompt,而不是像我们在上一个视频中学习的那样&…...
从零手搓一个【消息队列】创建核心类, 数据库设计与实现
文章目录 一、创建核心类1, 交换机2, 交换机类型3, 队列4, 绑定5, 交换机转发 & 绑定规则6, 消息7, 消息属性 二、数据库设计1, 使用 SQLite2, 使用 MyBatis2.1, 创建 Interface2.2, 创建 xml 文件 三、硬盘管理 -- 数据库1, 创建 DataBaseManager 类2, init() 初始化数据库…...
14:00面试,14:06就出来了,这问的过于变态了。。。
前言 刚从小厂出来,没想到在另一家公司我又寄了。 在这家公司上班,每天都要加班,但看在钱给的比较多的份上,也就不太计较了。但万万没想到5月一纸通知,所有人不准加班了,不仅加班费没有了,薪资…...
url请求头信息
Accept Accept:请求报头域,用于指定客户端可接受哪些类型的信息。 Accept-Language Accept-Language:指定客户端可接受的语言类型。 Accept-Encoding Accept-Encoding:指定客户端可接受的内容编码。 Host Host:…...
【Oracle】Oracle系列之十六--数据库备份
文章目录 往期回顾1. 数据库备份的分类1.1 逻辑备份与物理备份(1)逻辑备份(2)物理备份(3)归档模式与非归档模式 1.2 完全备份/差异备份/增量备份 2. Oracle 逻辑备份2.1 EXP/IMP(1)E…...
uni-app:实现页面效果3
效果 代码 <template><view><!-- 风速风向检测器--><view class"content_position"><view class"content"><view class"SN"><view class"SN_title">设备1</view><view class&quo…...
超实用的三角高程观测记录及平差计算表格程序
三角高程观测记录及平差计算表格程序:通过给出的高程点的坐标(边长)和高程,只要填写点号,就能实现自动反向计算测量过程,并自动生成四个测回的观测记录。 非常实用方便,表格界面简洁,通用&#…...
笔记工具模板系统实用指南:从效率提升到知识管理进阶
笔记工具模板系统实用指南:从效率提升到知识管理进阶 【免费下载链接】OB_Template OB_Templates is a Obsidian reference for note templates focused on new users of the application using only core plugins. 项目地址: https://gitcode.com/gh_mirrors/ob/…...
造相-Z-Image-Turbo 在计算机网络教学中的应用:可视化展示协议交互角色
造相-Z-Image-Turbo:让计算机网络协议“活”起来的教学新助手 每次讲到TCP三次握手、HTTP请求响应这些概念,看着台下学生迷茫的眼神,你是不是也感到头疼?协议栈、数据包、端口号,这些抽象的名词和冰冷的箭头图&#x…...
Android息屏后定时器失效?手把手教你搞定华为/小米等主流机型后台保活
Android息屏定时器保活实战:主流机型后台运行全攻略 每次调试完的定时任务在息屏后莫名停止?这可能是Android开发者最头疼的问题之一。去年我们团队开发一款健康提醒应用时,就遇到了这个经典难题——用户锁屏后定时提醒功能完全失效ÿ…...
Qwen3-0.6B-FP8部署与Git工作流结合:AI代码审查助手
Qwen3-0.6B-FP8部署与Git工作流结合:AI代码审查助手 你有没有遇到过这种情况?团队里新来的小伙伴提交了一段代码,语法上挑不出大毛病,但总觉得逻辑有点绕,或者命名风格不太统一。你作为资深开发,想提点建议…...
Text Control DS Server 5.0 新增了依赖注入服务,允许插件直接与文档处理功能配合使用
启用插件对文档处理 API 的访问权限2026年3月24日Text Control DS Server 5.0 新增了依赖注入服务,允许插件直接与文档处理功能配合使用。TX Text Control DS Server 是一款服务器端文档处理解决方案,旨在将文档生成、编辑和转换功能集成到现代应用程序中…...
weixin258基于微信小程序的课堂点名系统springboot(文档+源码)_kaic
第5章 系统实现进入到这个环节,也就可以及时检查出前面设计的需求是否可靠了。一个设计良好的方案在运用于系统实现中,是会帮助系统编制人员节省时间,并提升开发效率的。所以在系统的编程阶段,也就是系统实现阶段,对于…...
感性负载续流二极管设计与选型指南
1. 感性负载驱动电路中的续流二极管设计1.1 电感特性与瞬态响应电感作为基础电子元件,其核心特性是阻碍电流变化。当恒定电流通过电感时,它表现为普通导线;但当电流变化时,电感会产生感应电动势(EMF)来抵抗这种变化。在电路断开瞬…...
OpenClaw问题诊断:Qwen3.5-4B-Claude模型执行失败常见原因分析
OpenClaw问题诊断:Qwen3.5-4B-Claude模型执行失败常见原因分析 1. 问题背景与诊断思路 上周在尝试用OpenClaw自动化处理技术文档时,遇到了模型执行中断的问题。当时任务卡在"分析Markdown文档结构"环节,控制台只留下一行模糊的错…...
OpenClaw本地知识库:nanobot处理私有化文档问答
OpenClaw本地知识库:nanobot处理私有化文档问答 1. 为什么需要本地知识库助手 去年我接手了一个技术文档整理项目,团队积累了超过2000份内部技术文档、会议纪要和产品说明。每次新人入职或者遇到特定技术问题时,我们都要在这些文档里大海捞…...
