当前位置: 首页 > news >正文

软件测试肖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 分支管理办法 一. 大型项目分支管理中存在的痛点 大型项目中需求的上线存在很大的不确定性,而且往往存在多版本、多团队、多开发并行的情况。尤其是大型企业对上线分支中编号的管理十分严苛,严禁夹带上线。这时对于开发而言,没有一个好…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...