软件测试肖sir__python之ui自动化定位方法(2)
Selenium中元素定位方法
一、定位方法
要实现UI自动化,就必须学会定位web页面元素,Selenium核心
webdriver模块提供了9种定位元素方法:
定位方式 提供方法
id定位 find_element_by_id()
name定位 find_element_by_name()
class定位 find_element_by_class_name()
link定位 find_element_by_link_text()
partial link定位 find_element_by_partial_link_text()
JavaScript定位 document.getElementById(“kw”).value=“duoceshi”
tag定位 find_element_by_tag_name()
xpath定位 find_element_by_xpath()
css定位 find_element_by_css_selector()
二、定位方法详解
1、准备工作
网站:https://www.baidu.com/
打开页面元素:
方法:f12+fn 或f12 或者右键更多工具=开发者工具

元素:
百度中输入框的元素
案例
1、id定位 find_element_by_id()
send_keys(“”)输入内容
案例:
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_id('kw').send_keys("dcs") #id定位
sleep(5)
dx.close()
2、name定位 find_element_by_name()
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_name('wd').send_keys('我是name定位')
sleep(5)
dx.close()
3、class定位 find_element_by_class_name()
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_class_name("s_ipt").send_keys('我是class定位')
sleep(5)
dx.close()
4、link定位 find_element_by_link_text()
click()点击
针对a标签

from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_link_text("hao123").click()
sleep(5)
dx.close()
5、partial link定位 find_element_by_partial_link_text() 模糊定位
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_partial_link_text("hao").click()
sleep(5)
dx.close()
6、JavaScript定位 document.getElementById(“kw”).value=“duoceshi”
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
js='document.getElementById("kw").value="js方法"'
dx.execute_script(js)
sleep(5)
dx.close()
7、tag定位 find_element_by_tag_name()
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
inputs=dx.find_elements_by_tag_name('input')
for i in inputs:#遍历所有input标签if i.get_attribute("name")=='wd':i.send_keys("tagname定位方法")
sleep(5)
dx.close()
8、xpath定位 find_element_by_xpath()
(1)讲解xpath 路径定位方法
案例: 复制 :xpath://*[@id=“kw”]
复制 :full xpath :/html/body/div[2]/div[1]/div[5]/div/div/form/span[1]/input
xpath路径定位详解:
a.绝对路径
特点:
(1)以/ 开头,
(2)从页面根元素开始
如下图:
/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input
html标签,开始,严格按照元素在html页面中的位置和顺序向下查找
b.相对路径
特点:
a.以双斜杠//开头;
b. 不考虑元素在页面中的绝对路径和位置,只考虑是否存在符合表达式的元素即可。
c.使用标签名+节点属性定位
语法://标签名【@属性名=属性值】
//表示相对路径,从匹配选择的当前节点存在文档中的节点,而不靠考虑他们的位置
. 选取当前节点
…选取当前节点的父节点
。匹配任何元素的节点
@* 匹配任何元素节点
@选取属性
如:
//[@id=“form”]
//[@id=“result_logo”]
(1)选定标签=右键=copy xpath
(2)复制的xpath://*[@id=“kw”]
(一)xpath中的id地位
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath中id定位")
sleep(5)
dx.close()
(二)xpath中的拿name定位
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_xpath('//*[@name="wd"]').send_keys("xpath中name定位")
sleep(5)
dx.close()
(三)xpath中的class定位
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_xpath('//*[@class="s_ipt"]').send_keys("xpath中class定位")
sleep(5)
dx.close()
(四)xpath中的其他元素定位
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_xpath('//*[@autocomplete="off"]').send_keys("xpath中其他元素定位")
sleep(5)
dx.close()
(五)xpath中的其他组合元素定位(and)
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_xpath('//*[@autocomplete="off" and @class="s_ipt"]').send_keys("xpath中组合元素定位")
sleep(5)
dx.close()
(六)xpath中的层级定位
定义:找上一级定位或上上级定位

上上级xpath://[@id=“form”]
上一级xpath://[@id=“form”]/span[1]
输入框的xpath定位:
//[@id=“kw”]
或
//[@id=“form”]/span[1]/input[1]
或
//*[@id=“form”]/span/input
上一级定位:
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_xpath('//*[@id="form"]/span[1]/input[1]').send_keys("上级定位")
sleep(5)
dx.close()
上上级定位:
from selenium import webdriver
from time import sleep
dx=webdriver.Chrome()
dx.get('https://www.baidu.com/')
sleep(2)
dx.maximize_window()
sleep(2)
dx.find_element_by_xpath('//*[@id="form"]/span/input').send_keys("上上级定位")
sleep(5)
dx.close()相关文章:
软件测试肖sir__python之ui自动化定位方法(2)
Selenium中元素定位方法 一、定位方法 要实现UI自动化,就必须学会定位web页面元素,Selenium核心 webdriver模块提供了9种定位元素方法: 定位方式 提供方法 id定位 find_element_by_id() name定位 find_element_by_name() class定位 find_elem…...
【JVM面试题】JVM分代年龄为何是15次?能设置为16吗?
系列文章目录 【JVM系列】第一章 运行时数据区 【JVM面试题】第二章 从JDK7 到 JDK8, JVM为啥用元空间替换永久代? 【JVM面试题】第三章 JVM分代年龄为何是15次?能设置为16吗? 大家好,我是青花。拥有多项发明专利(都是…...
java三层架构/表现层-业务层-持久层
三层架构 什么是 Java 三层架构 三层架构是指:视图层view(表现层),服务层service(业务逻辑层),持久层Dao(数据访问层), Java的三层架构是指将Java程序分为三…...
视频监控这样做,简单又高效!
随着技术的不断进步,视频监控系统已经变得更加高效和智能,可以提供更全面的监控和分析功能,有助于提高安全性、管理效率和决策支持。 客户案例 超市连锁店 福建某全国性超市连锁店面临高额商品损失、偷窃问题,以及对客户安全和员工…...
掌握 Go 的计时器
简介 定时器是任何编程语言的重要工具,它允许开发人员在特定时间间隔安排任务或执行代码。在 Go 中,定时器是通过 time 包实现的,该包提供了一系列功能来创建、启动、停止和有效处理定时器。我们将探索 Go 中定时器的强大功能,并…...
嵌入式软件开发笔试面试
C语言部分: 1.gcc的四步编译过程 1.预处理 展开头文件,删除注释、空行等无用内容,替换宏定义。 gcc -E hello.c -o hello.i 2.编译 检查语法错误,如果有错则报错,没有错误则生成汇编文件。 gcc -S hello.i -o h…...
【Qt高阶】Linux安装了多个版本的Qt 部署Qt程序,出包【2023.10.17】
简介 linux系统下可执行程序运行时会加载一些动态库so,有一些是Qt的库,Qt的库会加载其他更基础的库。最后出包的时候需要把依赖的包整理到一个文件夹,来制作安装包。近期遇到已经将依赖的so文件拷贝至程序目录下,但还是调系统路径…...
OpenGL简介
OpenGL 本身并不是一个 API,它仅仅是一个由 Khronos组织 制定并维护的规范(Specification)。规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现的,将由 OpenGL 库的开发者自行决定。…...
持续集成工具jenkins操作
安装Jenkins 下载jenkins安装包 linux上下载jenkins失败 开始在windows上安装jenkins 1、先安装JDK https://jingyan.baidu.com/article/fdbd4277dd90f0b89e3f489f.html 免安装版本JDK只需要解压配置环境变量即可 2、安装Jenkins 参考文档: https://www.cnb…...
使用BurpSuite抓取HTTPS接口
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 原因设置方式 原因 BurpSuite之所以不能抓取https数据包,是因为BurpSuite作为中间人代理,我们和https网站之间的数据通信都是由BurpSuite来…...
移动硬盘被格式化了如何恢复数据?四步教你如何恢复
在日常生活中,我们常常会使用各种存储设备来保存和备份我们的重要数据。移动硬盘作为一种便携式的存储设备,被广泛应用于数据的存储和传输。然而,有时候我们会不小心将移动硬盘格式化,从而丢失了里面的数据。本文将介绍移动硬盘格…...
基于变电站自动化系统中的安全措施分析及应用
摘要:阐述变电运行中的问题,电气自动化系统与安全运行措施,包括自动控制设备的投入,电气自动 化与计算机技术相、设备数据的采集与处理、自动化系统的升级、人工智能技术的应用。 关键词:自动控制;数据采…...
18、监测数据采集物联网应用开发步骤(12.3)
阶段性源码下载 监测数据采集物联网应用开发步骤(12.2) 前端web UI开发 demo 核心代码文件: web/index.html web/index.js web/js/common.js web/init.dlls Web/init.js 程序运行之后在浏览器敲入如下内容访问数据接口: http://localhost:9000…...
什么是Mybatis?Mybaits有哪些优点?
MyBatis是一个开源的Java持久层框架,它可以将Java对象映射到关系型数据库中,同时提供了灵活、高效、易用的数据访问解决方案。 下面是对MyBatis的详细介绍: 1、SQL映射文件 MyBatis使用简单的XML文件或注解配置文件将Java对象映射到数据库…...
点云从入门到精通技术详解100篇-基于3D点云的曲面文字检测(续)
目录 3.2.3 手动特征提取 3.2.4 基于图绘制的 2D 网格平面生成 3.2.5 特征融合的多通道伪图像生成...
用 Java 在 PDF 中创建和管理图层,实现交互式文档
PDF 图层(也称为可见图层或附加图层等)是组织和管理 PDF 文档中内容可见性的一种方法。PDF 图层可用于创建交互式文档、隐藏或显示特定信息、创建多语言版本文档等。通过添加和删除图层,用户可以根据需要定制 PDF 文档指定内容的可见性与显示…...
公司oa是什么?一般公司oa有什么样功能?
公司OA(Office Automation)是指通过计算机和信息技术来实现办公自动化的系统。 它提供了一系列的功能和工具,用于协调、管理和处理公司内部的日常事务和流程。OA系统旨在提高工作效率、加强信息交流与共享、简化业务流程,并提供便…...
pytorch里面的 nn.Parameter 和 tensor有哪些异同点
简单来说,你可以把tensor看作是一个通用的数据结构,而nn.Parameter看作是一种特殊的tensor,这种tensor可以被优化以提高模型的性能。在创建模型参数时,你应该使用nn.Parameter而不是直接使用tensor,因为这样可以确保模…...
leetcode 37. 解数独
编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分…...
GIT 分支管理办法
GIT 分支管理办法 一. 大型项目分支管理中存在的痛点 大型项目中需求的上线存在很大的不确定性,而且往往存在多版本、多团队、多开发并行的情况。尤其是大型企业对上线分支中编号的管理十分严苛,严禁夹带上线。这时对于开发而言,没有一个好…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
