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

2023-12-19

前言

当我们在使用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表达式将会匹配 id kw input 元素。

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常用的几种元素定位方法,灵活地使用元素定位方法对于提高我们查找元素定位效率,提升测试脚本的健壮性有很大帮助,希望本文能够帮到大家。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【自动化测试】selenium元素定位方式大全! 的相关文章

  • 测试用例评审流程优化

    测试用例 评审是QA日常工作流程中的关键一环 是QA同学完善测试用例 交流测试经验的好机会 负责组内测试用例建设以来 作者对于评审流程做了一些优化工作 本文作者将整个优化过程中的心得体会做了一个总结 希望能给大家带来帮助 01 原始流程 1
  • 软件测试|使用Python轻松裁剪视频

    简介 裁剪视频是在视频编辑和处理中常见的任务之一 Python提供了多种库和工具 可以用来裁剪视频 在本文中 我们将详细讨论如何使用Python来裁剪视频 并提供示例代码 步骤1 环境准备 首先 我们要安装必要的Python库 我们将使用
  • 软件测试|使用matplotlib绘制多种折线图

    简介 在数据可视化领域 Matplotlib是一款非常强大的Python库 它可以用于绘制各种类型的图表 包括折线图 本文将介绍如何使用Matplotlib创建多种不同类型的折线图 并提供示例代码 创建模版 在绘图之前 我们可以先创建我们的
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • 界面控件DevExpress WPF属性网格 - 让应用轻松显示编辑各种属性事件

    DevExpress WPF Property Grid 属性网格 灵感来自于Visual Studio Visual Studio启发的属性窗口 对象检查器 让在WPF应用程序显示和编辑任何对象的属性和事件变得更容易 P S DevExp
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 一篇文章带你了解Python常用自动化测试框架——Pytest

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 软件测试中的白盒测试,这些技巧你知道吗?

    对于很多刚开始学习软件测试的小伙伴来说 如果能尽早将黑盒 白盒测试弄明白 掌握两种测试的结论和基本原理 将对自己后期的学习有较好的帮助 今天 我们就来聊聊黑盒 白盒测试的相关话题 1 黑盒测试的方法和小结 最常见黑盒测试方法包括 边界值 等
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 2024拒绝行业内卷!八年软件测试20K*16薪行业心得 想入行必看

    目前工作做软件测试工作8年 属于高级测试员那个级别吧 现在看到各行各业的人都在转行学习软件测试 想给大家一些学习建议和忠告 很多粉丝都跟我说今年行情很差 找不到工资 真的找不到工作了吗 我们常在网上看到的 程序员饱和 程序员过剩 其实一般是
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • 深入解析 YAML 配置文件:从语法到最佳实践

    一 认识YAML YAML YAML Ain t Markup Language 是一种人类可读的数据序列化语言 它的设计目标是使数据在不同编程语言之间交换和共享变得简单 YAML采用了一种简洁 直观的语法 以易于阅读和编写的方式表示数据结
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!

    自动化关键数据记录 简介 关键数据记录是 Web 自动化测试中的关键部分 它们提供了关于系统行为和执行过程的详细信息 有助于验证用例的正确性 排查问题和确保应用程序的质量 行为日志 行为日志是一种用于记录系统或应用程序的操作和事件的技术 它

随机推荐

  • Scala多线程爬虫程序的数据可视化与分析实践

    一 Scala简介 Scala是一种多种类型的编程语言 结合了针对对象编程和函数式编程的功能 它运行在Java虚拟机上 具有强大的运算能力和丰富的库支持 Scala常用于大数据处理 并发编程和Web应用程序开发 其灵活性和高效性编程成为编写
  • 基于PaddleOCR搭建身份证识别web api接口

    前言 通过 这篇文章 基于PaddleOCR的DBNet神经网络实现全网最快最准的身份证识别模型 开发的身份证识别模型 还无法进行部署应用 这篇文章就已经开发好的代码如何部署 并如何通过api的接口进行访问进行讲解 项目部署 以window
  • 图片编辑软件怎样使用?整理好的方法都在这里了

    马上迎来毕业季啦 各位准毕业生们除了在 奋笔疾书 自己的毕业论文 是不是也在准备拍摄毕业照呢 大家在校园里度过了各种美好时光 如今即将告别这个充满青春和梦想的地方 走向新的人生阶段 而作为人生中一个重要的节点 当然需要通过拍摄毕业照 来留下
  • 玩转Docker(六):数据挂载与共享

    文章目录 Docker的两种存放数据的资源 1 Storage Driver 2 Data Volume 3 使用场景 一 使用Data Volume 1 v
  • 成为软件测试工程师需要学什么?

    成为 软件测试 工程师需要学习测试环境的搭建 前端开发知识 数据库 知识 测试理论基础 开发语言基础 自动化测试 进阶内容 1 测试环境的搭建 本部分主要是学习从 操作系统 开始 有关的计算机基础知识 软件和硬件知识 计算机理论知识 网络知
  • IP地址与实时位置之间的关系

    在互联网的普及和信息技术的快速发展中 IP地址作为一种标识符 已经深入到我们的日常生活和工作中 然而 对于IP地址与实时位置的关系 许多人存在误解 本文将对此进行澄清 阐述IP地址与实时位置之间的关系 首先 需要明确的是 IP地址本身并不直
  • 自动生成字幕的播放器有哪些?推荐几款实用的工具

    大家平时在看电影和电视的时候 是不是都习惯通过字幕来理解人物中的对话信息呢 是的 字幕确实可以方便大家获取视频信息 为大家提供更舒适的观影体验 而对于一些没有字幕信息的视频 大家也不用担心 我们可以借助一些自动生成字幕的电脑播放器来为视频添
  • 软件测试/测试开发/人工智能丨机器学习中特征的含义,什么是离散特征,什么是连续特征。

    在机器学习中 特征 Feature 是输入数据中的属性或变量 用于描述样本或数据点 特征对于机器学习模型而言是输入的一部分 模型通过学习样本的特征与其对应的标签 或输出 之间的关系来做出预测或分类 特征可以分为不同类型 其中两个主要的类型是
  • 华纳云:网站空间提示容量已满有哪些解决方法?

    当网站空间容量已满时 您可以采取一些解决方法来释放空间 优化资源利用或扩大存储容量 以下是一些可能的解决方法 删除不必要的文件 检查网站文件和数据库 删除不再需要的或过期的文件 这可能包括旧的备份 日志文件 临时文件等 优化数据库 如果您的
  • HTTP JSON接口模拟工具Interfake快速入门教程

    一 简介 Interfake能简便地创建虚假的HTTP API 只需简单几行代码就可以创建模拟JSON接口 使用命令行方式也可以不写代码 不需要安装web服务器 Interfake是NodeJs开发的 是一款开源Mock Server工具
  • 软件测试/测试开发/人工智能丨使用 GraphWalker 实现自动化测试用例生成

    GraphWalker是一个用于模型驱动测试 Model Based Testing 的工具 它通过有向图 图模型 来描述系统的行为 然后生成测试用例以覆盖不同的路径 以下是使用GraphWalker实现自动化测试用例生成的基本步骤 步骤
  • Html+单页面引入element以及Vue框架引用地址报错(unpkg.com国内无法访问可代替方案)

    问题 单页面引入element以及vue 地址报错 请求超时 使用的引用地址是官网上提供 但是没解决问题 一 原因 unpkg 也没有幸免于难 也被墙了 unpkg上的相关资源都不能访问 才导致项目资源加载不出 二 解决方法 方法一 可以使
  • Python不是一种伟大的编程语言?

    作为一门简洁易用 生态蓬勃且具有高泛用性的编程语言 Python一直以来都被不少人称作 编程语言中的瑞士军刀 尤其随着近来AI热潮席卷全球 Python在编程语言圈中的地位也随之水涨船高 甚至一度被视作AI专用语言或大数据专用语言 然而从语
  • 软件测试/测试开发/人工智能丨分类,二分类和回归问题的对应场景与区别

    分类 二分类和回归问题是机器学习中常见的三种任务类型 它们分别适用于不同的场景 具有不同的目标和输出 1 分类问题 Classification 场景 适用于将数据点分到不同的类别或标签中的问题 每个类别代表一种离散的类别或状态 例子 判断
  • OpenCV4工业缺陷检测的六种方法

    发现宝藏 前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 宝藏入口 机器视觉 机器视觉是使用各种工业相机 结合传感器跟电气信号实现替代传统人工 完成对象识别 计数 测量 缺陷检测 引导定位与抓取等任务 其中
  • Python+flask编写接口实例详解

    环境 Pycharm 其他环境 安装Anaconda 最近在做一个小型项目练手 涉及到大量的IP和相关数据处理 所以选用了Python来处理数据 但是处理完怎么给前端调用呢 今天这篇就是在Python方便地处理完数据后以接口形式把数据返回给
  • 龙芯loongarch64服务器编译安装gcc-8.3.0

    前言 当前电脑的gcc版本为8 3 0 但是在编译其他依赖包的时候 出现各种奇怪的问题 会莫名其妙的中断编译 本地文章讲解如何自编译安装gcc 替换系统自带的gcc 环境准备 下载页面 龙芯开源社区网站 LoongArch GCC 8 3
  • List去重-使用distinctByKey方法根据对象的属性进行去重

    description 使用distinctByKey方法根据对象的属性进行去重 author zs date 2023 12 18 14 29 param keyExtractor return java util function Pr
  • 智汇云舟视频孪生产品矩阵升级 打造视算一体的数字孪生创新应用

    近年来 数字孪生作为数字经济的关键技术 已从浅层次应用 逐渐步入产业发展的 深水区 随着数字孪生技术的发展和应用 单纯的可视化已经不能满足用户需求 以虚拟场景和真实业务数据相结合的虚实融合需求正在成为各行业数字化应用的重点 智汇云舟以视频
  • 【自动化测试】selenium元素定位方式大全!

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