Selenium中元素定位方法详细介绍

  • 📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢交流讨论:欢迎加入我们一起学习!
  • 📢资源分享:耗时200+小时精选的「软件测试」资料包
  • 📢 最困难的时候,也就是我们离成功不远的时候!

目录

    • 一、元素定位基本方法
    • 二、XPATH定位及CSS定位
    • 三、元素定位的另一种写法
    • 最后

一、元素定位基本方法

1、如何进行元素定位?

元素:由标签头 + 标签尾 + 标签头和标签尾包括的文本内容;

元素的信息就是指元素的标签名及元素的属性;

元素的层级结构就是指元素之间相互嵌套的层级结构;

元素定位最终就是通过元素的信息或者元素的层级结构来进行元素定位;

2、浏览器开发者工具介绍
浏览器开发者工具主要是用来查看元素的信息,同时也可以查看接口的相关信息;

浏览器开发者工具不需要安装,浏览器自带;

浏览器开发者工具的启动:

F12;
选中元素右键点击检查/检查元素(谷歌浏览器、火狐浏览器);
浏览器开发者工具使用:

点击浏览器开发者工具左上角的元素查看器按钮;
再点击想要查看的元素

3、元素定位
八种元素定位方法

3.1、ID定位
1、通过元素的ID属性值来进行元素定位(在html标准规范中ID值是唯一的);

2、定位方法:find_element_by_id(id) #id参数表示的是id的属性值;(定位的元素必须有ID属性)

在这里插入图片描述

driver.find_element_by_id("kw")

3.2、NAME定位
1、通过元素的NAME属性值来进行元素定位;(name属性值在html页面中是可以重复的);

2、定位方法:find_element_by_name(name) #name参数表示的是name的属性值;(定位元素必须有NAME属性)

在这里插入图片描述

driver.find_element_by_name("wd")

3.3、CLASS_NAME定位
1、通过元素的CLASS属性值来进行元素定位;(class属性值在html页面中是可以重复的);

2、定位方法:find_element_by_class_name(class_name) #class_name参数表示的是class的属性值;(定位元素必须有class属性)

在这里插入图片描述
注意:class属性值有多个时(用空格隔开),仅需要其中一个属性值:(但若是使用Xpath属性定位时,需要用到全部属性值)
比如:

driver.find_element_by_class_name("s_ipt")

3.4、TAG_NAME定位
1、通过元素的标签名称来进行元素定位,在同一个html页面当中,相同标签元素会有很多;(不建议使用)

2、定位方法:find_element_by_tag_name(tag_name) #tag_name参数表示的是元素的标签名;(定位元素必须有标签名)如果有重复的元素定位到的元素默认都是第一个;

在这里插入图片描述

driver.find_element_by_tag_name("input")

3.5、LINK_TEXT定位

1、通过超链接的全部文本信息来进行元素定位(主要用来定位a标签);

2、定位方法:find_element_by_link_text(link_text) #link_text参数表示的是超链接(a标签)的全部文本内容;

在这里插入图片描述

driver.find_element_by_link_text("新闻")
driver.find_element_by_link_text("地图")

3.6、PARTIAL_LINK_TEXT定位

1、通过超链接的局部文本信息来进行元素定位(主要用来定位a标签);

2、定位方法:find_element_by_partial_link_text(partial_link_text) #partial_link_text参数表示的是超链接(a标签)的局部文本内容;

在这里插入图片描述

find_element_by_partial_link_text("访问")
find_element_by_partial_link_text("网站")

3.7、定位一组元素
1、定位一组元素的方法

find_elements_by_id(id)
find_elements_by_tag_name(tag_name)

2、定位一组元素返回的值是一个里列表;

3、可以通过下标来使用列表中的元素;(下标以0开始)

二、XPATH定位及CSS定位

在页面当中,有一些元素无法通过元素的信息精准的定位到,所以需要Xpath及Css定位。

1、XPATH定位
1.1、什么是XPATH?
1、Xpath是XML Path的简称,是一门在XML文档中查找元素信息的语言;

2、HTML可以看做是XML的一种实现;

XML:是一种标记语言,用于数据的存储和传递。后缀.xml结尾。

1.2、XPATH定位策略
路径定位

属性定位

属性与逻辑结合

属性与层级结合

1.2.1、路径定位
定位方法:find_element_by_xpath(xpath) #xpath表达式

绝对路径:表达式以/html开头,元素的层级之间是以/分隔,相同层级的元素可以使用下标,下标从1开始;需要列出元素所经过的所有层级元素,在工作中,一般不使用绝对路径。

/html/body/div/div/div/div/div

相对路径:匹配任意层级的元素,是以//tag_name或者//*开头,也可以使用下标,下标从1 开始。

//div[10]//button

1.2.2、属性定位
//或者//tag_name //[@attribute=‘value’] #attribute元素的属性 #元素的属性值

在这里插入图片描述

driver.find_element_by_xpath(//input[@id='kw'])

1.2.3、属性与逻辑结合定位

//或者//tag_name //[@attribute1=‘value1’ and @attribute2=‘value2’ ] #attribute元素的属性 #元素的属性值

driver.find_element_by_xpath(//input[@id='kw' and @name='wd'])

1.2.4、属性与层级结合定位
是以//*或者//tag_name开头

在任意层级当中,都可以结合属性使用

driver.find_element_by_xpath(//form//input[@id='kw'])

1.3、XPATH-延伸
//*[text()=“value”] value表示的是要定位的元素的全部文本内容

//*[text()='新闻']

//*[contains(@attribute,‘value’)] attribute表示的属性名称,value表示是内容,要定位的元素中,attribute属性的属性值中包含了value的内容

//*[contains(@value,'百度')]
//*[contains(@value,'一下')]

//*[starts-with(@attribute,‘value’)] attribute表示的属性名称,value表示是字符串,要定位的元素,attribute属性的属性值是以value开头

//*[starts-with(@value,'百度')]

2、CSS定位
2.1、什么是CSS?
1、css是一种语言,他用来描述HTML元素的显示样式;

2、在css中,选择器是一种模式,用于选择需要添加样式的元素;

3、在Selenium中也可以使用选择器来定位元素;

find_element_by_css_selector(css_selector) # css_selector 表示的是CSS选择器表达式
1
css定位速度较快;
css选择器语法强大;(但一般工作中使用xpath)
2.2、CSS定位策略
id选择器

class选择器

元素选择器

属性选择器

层级选择器

2.2.1、id选择器
表达式: #id # 表示通过元素的ID属性进行元素选择 id表示的是id属性的属性值

find_element_by_css_selector(#su)

2.2.2、class选择器
表达式: .class . 表示通过元素的CLSS属性进行元素选择 class表示的是class属性的其中一个属性值

find_element_by_css_selector(.s_ipt)

2.2.3、元素选择器
通过元素标签名称来选择元素。表达式:tag_name(不推荐使用)

find_element_by_css_selector(input)

2.2.4、属性选择器
通过元素的属性来选择元素。表达式:[attribute=‘value’] #attribute属性名称 #value属性值

在这里插入图片描述
如果使用的是class属性,需要带上class的全部属性值

find_element_by_css_selector([name='wd'])

2.2.5、层级选择器
说明:根据元素的父子关系来选择
父子关系
格式1:element1>element2 通过element1来定位element2,并且element2必须为element1的直接子元素;

在这里插入图片描述

find_element_by_css_selector(span>input[id='kw'])

隔代关系
格式2:element1 element2 通过element1来定位element2,并且element2必须为element1的后代元素;

在这里插入图片描述

find_element_by_css_selector(form[id='form'] input[name='wd'])

2.2、CSS扩展
input[type^=‘p’] #input表示标签名称 #type表示属性名称 #p表示匹配内容(以p字母开头的元素)

在这里插入图片描述

find_element_by_css_selector(input[class^='s'])

input[type$=‘d’] (以d字母结束元素)

在这里插入图片描述

find_element_by_css_selector(input[type$='it'])

input[type*=‘w’] (包含w字母的元素)

在这里插入图片描述

find_element_by_css_selector(input[type*='sub'])

三、元素定位的另一种写法

from selenium.webdriver.common.by import By

方法:find_element()

   # 办公管理OfficeManagementLoc = (By.XPATH, "//main//span[@id='bc13ef20f5844e73b3ba'][text()='办公管理']")

最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

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

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

相关文章

JavaScript实现飞机发射子弹详解(内含源码)

JavaScript实现飞机发射子弹 前言实现过程源码展示源码讲解HTML结构CSS结构js结构 前言 文本主要讲解如何利用JavaScript实现飞机发射子弹,实现过程以及源码讲解。实现效果图如下: 实现过程 首先,找到飞机和子弹的UI图,gif图最…

【Android】使用Retrofit2发送异步网络请求的简单案例

添加网络权限到AndroidManifest.xml清单文件 为了让你的Android应用程序能够使用互联网进行通信&#xff0c;你需要在AndroidManifest.xml文件中添加网络权限声明。<uses-permission android:name"android.permission.INTERNET"/> 这个权限应该添加到 Android…

python爬虫概述及简单实践:获取豆瓣电影排行榜

目录 前言 Python爬虫概述 简单实践 - 获取豆瓣电影排行榜 1. 分析目标网页 2. 获取页面内容 3. 解析页面 4. 数据存储 5. 使用代理IP 总结 前言 Python爬虫是指通过程序自动化地对互联网上的信息进行抓取和分析的一种技术。Python作为一门易于学习且强大的编程语言&…

LabVIEW关于USRPRIO的示例代码

LabVIEW关于USRPRIO的示例代码 USRPRIO 通常以两种方式使用&#xff1a; 1 基于 FPGA 的编程 对于希望修改USRP上的底层FPGA代码以添加自定义DSP模块的应用&#xff0c;请使用USRP示例项目。它可作为构建 USRP RIO 流式处理应用程序的起点&#xff0c;可从“创建项目”对话框…

项目资讯丨轻空间中标连云港市首座“多功能声学综合馆”(EPC)

近日&#xff0c;轻空间&#xff08;江苏&#xff09;膜科技有限公司&#xff08;以下简称“轻空间”&#xff09;成功中标连云港市首座“多功能声学综合馆”项目&#xff0c;这标志着轻空间在新型气膜领域的创新突破技术&#xff0c;再次获得政府机构的高度认可&#xff0c;为…

水声功率放大器在声呐系统中的应用有哪些

水声功率放大器在声呐系统中扮演着重要的角色&#xff0c;其应用涵盖了声呐系统的多个方面。下面就让安泰电子来介绍水声功率放大器在声呐系统中的应用。 发射声波信号&#xff1a;声呐系统通过发射声波信号并接收其回波来探测和测量海洋中的目标物体。水声功率放大器用于放大发…

划片机新手教程:从准备工作到注意事项全解析!

随着科技的飞速发展&#xff0c;划片机已成为半导体行业不可或缺的一部分。对于新手来说&#xff0c;如何正确操作划片机显得尤为重要。以下是新手操作划片机的步骤和建议。 一、准备工作 在开始操作划片机之前&#xff0c;首先需要准备好以下工具和材料&#xff1a; 1. 划片机…

CICD 持续集成与持续交付——gitlab

部署 虚拟机最小需求&#xff1a;4G内存 4核cpu 下载&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 安装依赖性 [rootcicd1 ~]# yum install -y curl policycoreutils-python openssh-server perl[rootcicd1 ~]# yum install -y gitlab-ce-15.9.3-ce.0…

SQL常见函数整理 —— lead()向下偏移

1. 用法 是在窗口函数中使用的函数&#xff0c;它用于获取当前行的下一行&#xff08;后一行&#xff09;的某个列的值。具体来说&#xff0c;LEAD() 函数可用于查找任何给定行的下一行&#xff08;后一行&#xff09;的值&#xff0c;同时也可控制行数偏移量&#xff08;offse…

创建自定义日志筛选器

Windows的事件查看器中的日志包含了很多信息&#xff0c;但是系统自带的筛选器只能筛选固定的字段和内容。有时候想根据某个事件中的用户名或者IP筛选的时候就没办法了。此时需要创建自定义筛选器来实现。 首先找到希望筛选的日志&#xff0c;调整成详细的XML视图。 这里面就有…

WhatsApp新营销全解:出海新个体,能不能做好WhatsApp营销

对于很多外贸跨境群体来说&#xff0c;很多时候是单打独斗的新个体运营模式&#xff0c;团队成员数量一两个人。然而&#xff0c;正是这一两个人的运营团队&#xff0c;在运营的时候不仅有四两拨千斤的能力&#xff0c;还能做到十八般武艺全能。 他们在运营设计和实操环节&…

手写promis(1)

目录 前言 核心功能--构造函数 核心功能--状态及原因 then方法 成功和失败回调 异步及多次调用 异步任务--核心api Promise.then: queueMicrotask: MutationObserver: setImmediate: setTimeout: 异步任务---函数封装 前言 Promise&#xff08;承诺&#xff09;…

GEM5 Garnet DVFS / NoC DVFS教程:ruby.clk_domain ruby.voltage_domain

简介 gem5中的 NoC部分是Garnet实现的&#xff0c;但是Garnet并没有单独的时钟域&#xff0c;而是保持ruby一致&#xff0c;要做noc的DVFS&#xff0c;便是要改ruby的 改电压 #这里只是生成一个随便变量名&#xff0c;存一下值。改是和频率一起的 userssaved_voltage_domain…

⑩⑥ 【MySQL】详解 触发器TRIGGER,协助 确保数据的完整性,日志记录,数据校验等操作。

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 触发器 ⑩⑥ 【MySQL】触发器详解1. 什么是触发…

java:IDEA中的Scratches and Consoles

背景 IntelliJ IDEA中的Scratches and Consoles是一种临时的文件编辑环境&#xff0c;用于写一些文本内容或者代码片段。 其中&#xff0c;Scratch files拥有完整的运行和debug功能&#xff0c;这些文件需要指定编程语言类型并且指定后缀。 举例&#xff1a;调接口 可以看到…

定时关机软件哪个好?定时关机软件大盘点

在生活和工作中&#xff0c;我们可以使用定时关机软件来定时关闭电脑&#xff0c;以实现对电脑的控制。那么&#xff0c;定时关机软件哪个好呢&#xff1f;下面我们就来了解一下。 定时关机软件的作用 定时关机软件可以帮助用户在预设的时间自动关闭电脑。这对于那些需要在特…

网站被攻击怎么办?

网站被大流量攻击会造成服务器资源耗尽&#xff0c;一直到宕机崩溃&#xff0c;网站无法访问甚至被机房停用&#xff0c;时间长就导致网站排名下降&#xff0c;所以必需及时处理。下面跟大家分享服务器被大流量攻击怎么办&#xff1f;服务器攻击防护如何做&#xff1f; 一、服…

【Vue渲染】 条件渲染 | v-if | v-show | 列表渲染 | v-for

目录 前言 v-if和v-show的区别和联系 v-show和v-if如何选择 条件渲染|v-if|v-show v-if v-if v-else v-if v-else-if v-else template v-show 列表渲染|v-for v-for 前言 本文介绍Vue渲染&#xff0c;包含条件渲染v-if和v-show的区别和联系以及列表渲染v-for v-if和…

Android Studio 写一个Java调用c++ 的demo

前提条件&#xff1a; 本地已经配置好了ndk环境,如果没有配置好&#xff0c;建议参考macos 配置ndk环境-CSDN博客 这篇链接。 新建一个Empty Project 比如我这里的Project的名字是HelloJNI&#xff0c;包名是com.example.hellojni 然后在src目录下&#xff0c;右键选择Add C …

JVM虚拟机:通过日志学习PS+PO垃圾回收器

我们刚才设置参数的时候看到了-XXPrintGCDetails表示输出详细的GC处理日志&#xff0c;那么我们如何理解这个日志呢&#xff1f;日志是有规则的&#xff0c;我们需要按照这个规则来理解日志中的内容&#xff0c;它有两个格式&#xff0c;一个格式是GC的格式&#xff08;新生代&…