【自动化测试】selenium元素定位方式大全!

news2024/11/15 15:53:11

前言

当我们在使用selenium进行自动化测试工作时,元素定位是非常重要的一环,因为我们是借助脚本模拟我们通过鼠标和键盘对元素进行点击、输入内容和滑动操作的,所以准确的元素定位是我们执行测试脚本的重要一环。本文就来给大家介绍一下selenium的元素定位方式。

find_element和find_elements

元素定位有两个表达式,分别为find_element()find_elements(),它们的不同点如下:

  • find_element():找出的为单个元素,若有多个元素为同一表达式,则默认定位第一个元素,可以直接进行点击,输入等操作。
  • find_elements():找出的为一组列表,不能直接对元素进行点击等操作,需要加索引,取列表的第n个元素。

Xpath定位

Xpath定位方法是基本的一类定位方法,XPath(XML Path Language)是一种用于定位XML和HTML文档中元素的语言。其在自动化脚本中使用的例子如下:

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By

# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 通过xpath定位输入框,输入内容selenium
browser.find_element(By.XPATH, '//input[@id="kw"]').send_keys('selenium')
# 停留五秒后关闭浏览器
time.sleep(5)
browser.quit()

这个XPath表达式将会匹配idkwinput元素。

css定位

CSS选择器是一种强大且常用的定位方式。它能够通过元素的属性、标签名、类名等准确地定位到页面元素。其在自动化脚本中使用的例子如下:

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By

# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 通过css定位输入框,输入内容selenium
browser.find_element(By.CSS_SELECTOR, '.s_ipt').send_keys('selenium')
# 停留五秒后关闭浏览器
time.sleep(5)
browser.quit()
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

id定位

根据元素的id属性值定位,最为方便且唯一,但是现在很多元素的id都是动态生成的,在使用id属性定位时需要注意。其在自动化脚本中使用的例子如下:

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By

# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 通过ID定位输入框,输入内容selenium
browser.find_element(By.ID, 'kw').send_keys('selenium')
# 停留五秒后关闭浏览器
time.sleep(5)
browser.quit()

name定位

根据元素的name属性值定位,但是我们需要注意,定位到的元素可能并不是唯一的。其在自动化脚本中使用的例子如下:

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
# 通过name属性选择文本框元素,并设置内容
browser.find_element(By.NAME,'wd').send_keys("selenium")
# 通过通过ID属性获取“百度一下”按钮,并执行点击操作
browser.find_element(By.ID,"su").click()
# 停留五秒后关闭浏览器
time.sleep(5)
browser.quit()

class定位

class定位,根据元素的class属性值定位,但可能受JS影响动态变化。定位到的标签不一定是唯一的。其在自动化脚本中使用的例子如下:

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
time.sleep(2)
# 通过class属性选择元素
browser.find_element(By.CLASS_NAME,'s_ipt').send_keys("selenium")
time.sleep(2)
browser.find_element(By.ID,"su").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()

tag定位

tag name定位,根据元素的标签名定位,定位到的标签不一定是唯一的。其在自动化脚本中使用的例子如下:

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("https://www.baidu.com")
time.sleep(2)
# 选择<button></button>标签(搜索按钮),执行点击操作
browser.find_element(By.TAG_NAME, "button").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()

link定位

link表示包含有属性href的标签元素,如:<a href="https://www.csdn.net">linktext</a>可以通过LINK_TEXT进行定位。

  • find_element(By.LINK_TEXT,'XX')根据链接文本全匹配进行精确定位。
  • find_element(By.PARTIAL_LINK_TEXT,'XX')根据链接文本模糊匹配进行定位。

By.LINK_TEXT精确定位

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 选择https://news.baidu.com/标签,执行点击操作
browser.find_element(By.LINK_TEXT, "新闻").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()

By.PARTIAL_LINK_TEXT模糊定位

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 选择https://news.baidu.com/标签,执行点击操作
browser.find_element(By.PARTIAL_LINK_TEXT, "新").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()

总结

本文主要介绍了selenium常用的几种元素定位方法,灵活地使用元素定位方法对于提高我们查找元素定位效率,提升测试脚本的健壮性有很大帮助,希望本文能够帮到大家。

END今天的分享就到此结束了~!点赞关注不迷路! 
 

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

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

相关文章

windows11 ssd掉盘(无法访问)

故障描述&#xff1a; 开机的时候能够正常访问SSD当使用电源的时候很容易SSD无法访问接入电源以后掉盘情况缓解 故障原因&#xff1a;win11加入了一个新的电源策略 更改高级电源设置&#xff08;默认是10/20&#xff09;&#xff0c;把这个参数调整大。 非常蠢的一个设计&…

信号处理基础之噪声与降噪(二)| 时域降噪方法(平滑降噪、SVD降噪)python代码实现

接上期信号处理基础之噪声与降噪(一) | 噪声分类及python代码实现&#xff0c;本期为大家介绍噪声评价指标&#xff0c;并且讲解两种降噪方法——平滑降噪、SVD降噪&#xff0c;并给出python代码。 信号处理基础之噪声与降噪(二&#xff09;| 时域降噪方法&#xff08;平滑降噪…

Z Potentials | 叶生晅:生成式 AI 下不变的是需求,坚定成为客户的营销技术合伙人

移动互联网时代&#xff0c;视频、直播、兴趣电商、社交、新资讯等线上新平台新服务实现大发展&#xff0c;吸引用户加速融入日益不可或缺的线上生活和「线上线下」融合场景&#xff0c;铸就海量的流量红利。营销场景从来都是软件应用行业最大的市场&#xff0c;离客户的预算最…

基于ssm双星小区物业管理系统的设计与实现论文

摘 要 传统办法管理双星小区物业信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装双星小区物业管理系统软件来发挥其高效地信息处…

【性能测试】登录接口性能压测+选择并发用户数总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、需要登录的接口…

jvm相关命令操作

查看jvm使用情况 jmap -heap PID 查看线程使用情况 jstack pid 查看当前线程数 jstack 21294 |grep -E (#[0-9]) -o -c 查看系统线程数 top -H top -Hp pid #查看具体的进程中的线程信息 使用 jps 命令查看配置了JVM的服务 查看某个进程JVM的GC使用情况 jstat -gc 进程…

配置 vim 默认显示行号 行数 :set number

vi ~/.vimrc 最后添加一行 :set number保存退出&#xff0c;再次 vim 打开文件&#xff0c;默认就会显示行号了

ctfshow(web190-web200)

目录 web190 web191 web192 web193 web194 web195 web196 web197 web198 web199 web200 web190 为什么要有admin呢 这也是试出来的 这个admin必须是数据库中存在的 这样才能使用布尔注入 因为这个时候登录 有两种返回结果 一种密码错误 一种就是用户名错误 admin an…

自动化测试工具-Selenium:Selenium的核心三大组件详解

目录 1. WebDriver 1.1 WebDriver的通信方式 1.2 WebDriver的功能 1.3 W3C推荐标准 2. Grid 3. IDE Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。官方对Selenium认可的三大组件或API分别是&#xff1a;WebDriver、Selenium IDE、Grid。其中&#xff0c…

vue-springboot大学生兼职招聘评价系统_b8t93

线上管理大学生兼职平台设计与实现提供了良好的发展空间&#xff0c;随着人们生活质量的提高&#xff0c;人们对服务质量的要求越来越严格。人们希望拥有更好的大学生兼职平台体验。而且&#xff0c;大学生兼职平台有着使用常规电话交流比不了的便捷高效简单等优势。大学生兼职…

VS+Qt 打包Python文件

书接上回&#xff0c;调用C调用python&#xff0c;下面来谈谈随exe文件打包。 先说下环境vs2019Qt5.12.11python3.8&#xff0c;这里需要注意如果你要适配Win7的系统&#xff0c;python最好是9以下&#xff0c;以上不兼容&#xff0c;也没时间找方法&#xff0c;找到评论说下 如…

I Doc View在线文档预览任意文件读取

漏洞简介 I Doc View在线文档预览是一款在线文档预览系统&#xff0c;可以实现文档的预览及文档协作编辑功能。其存在任意文件读取漏洞&#xff0c;可通过该漏洞读取服务器各敏感文件 资产测绘 title“在线文档预览 - I Doc View” 漏洞利用 http://your_ip/doc/upload?t…

Nginx快速入门:访问日志access.log参数详解 |访问日志记录自定义请求头(三)

0. 引言 在企业的生产环境中&#xff0c;我们时常需要通过nginx的访问日志来统计流量、排查调用问题等&#xff0c;而nginx默认的日志格式所包含的信息远无法满足我们使用&#xff0c;因此常常需要对日志进行自定义&#xff0c;所以今天我们就来看如何自定义nginx的访问日志格…

移动端自适应

1.普通html页面 一般使用px定义&#xff0c;不会进行适配 移动端项目&#xff1a;从不同的终端保持页面的一致性&#xff08;自适应&#xff09;,使用rem相对单位&#xff0c;rem是相对于根节点html的font-size的值进行动态换算的值 2.普通html页面进行适配 普通页面中&…

解决方案架构师 vs 技术架构师,有何区别?

Salesforce架构师角色是生态系统中常见的职业目标。架构师因其丰富的Salesforce知识以及在平台上构建可扩展解决方案的能力而广受认可。 解决方案架构师和技术架构师是Salesforce生态系统中最常见的两个架构师角色&#xff0c;这些角色有一些重叠&#xff0c;但它们完全不同&a…

Seata使用详解

分布式事务介绍分布式事务的优缺点CAP理论介绍Base理论介绍CAP和BASE之间有什么区别Seata介绍Seata支持的事务模式介绍Seata的架构Seata应用场景Seata集群部署Seata集群部署的优缺点Seata在Java中的使用案例Seata在Java中的代码示例Seata与SpringBoot2.x的整合Seata与SpringBoo…

winfrom大恒工业相机SDK二次开发、C#联合halcon开发

一、开发环境 1.在大恒图像官网下载SDK安装包&#xff0c;安装SDK后&#xff0c;打开安装目录找到Samples文件夹&#xff0c;然后找到Samples\CSharp SDK\x64\DoNET\.NET4.0文件夹下找到GxIAPINET.dll&#xff0c;如图&#xff1a; 2.打开VS2019软件&#xff0c;建立winfrom项…

Linux系统管理、服务器设置、安全、云数据中心

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 我们来快速了解liunx命令 文章目录 前言解析命令提示符linux的文件和目录文件和目录管理文件操作 进程管理命令系统管理网络管理 书籍推荐 本文以服务器最常用的CentOS为例 解析命令提示…

JDBC简单使用

1. 首先导包&#xff0c;放在src -> lib下 打开项目结构&#xff0c;添加导入的包为库 基础语法 Statement statement conn.createStatement(); ---------------------------------------------- 1.execute(String query)方法用来执行任意的SQL语句查询&#xff0c;如果…

AcrelEMS-HIM高速公路综合能效系统在新晋高速公路快村营至营盘段项目的应用——安科瑞 顾烊宇

摘 要&#xff1a;我国新型工业化、信息化、城镇化和农业现代化加快发展&#xff0c;经济结构加快转型&#xff0c;交通运输总量将保持较快增长态势&#xff0c;各项事业发展要求提高国家公路网的服务能力和水平。高速公路沿线的收费站、互通枢纽、服务区、隧道等配置的供配电、…