Python+Selenium+Unittest 之selenium5--元素定位4-XPath定位1(基本概念)

news2024/12/24 12:15:35

目录

一、简介

二、节点关系

三、绝对路径与相对路径


一、简介

        Xpath定位在selenium中属于常用的定位方式,首先来说下Xpath的一些概念,Xpath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言,用白话来说就是他是通过路径来获取元素位置的,像id、name等定位方式需要找到其唯一的值才能准确定位到具体位置,而使用Xpath定位则是通过其路径来确定元素的位置,就像是现实生活中的地址一样,直接输入XX国XX省XX市XX街道XX号就能准确定位到一个准确的地址。

二、节点关系

        Xpath中有5种节点关系分别是:父节点(Parent)、子节点(Children)、兄弟节点(Sibling)、先辈节点(Ancestor)、后代节点(Descenadnt),可以先看下面的代码(忽略语法对错)和其对应的树状图来看下各个节点的含义。(为了理解方便,我在下面的树状图上加上了X.X去分辨其具体的位置)

<aaa>                        #1                  
    <bbb> bbbb </bbb>        #1-2.1
    <bbb> bbbb </bbb>        #1-2.2
    <bbb>                    #1-2.3
        <ccc>  cccc </ccc>   #1-2.3-1.1
        <ccc>  cccc </ccc>   #1-2.3-1.2
    </bbb>                   #1-2.3 (结束)
    <bbb>                    #1-2.4
        <ccc>                #1-2.4-1.3 
            <ddd>            #1-2.4-1.3-1.1
                <eee> eeee </eee>      #1-2.4-1.3-1.1-1.1
                <fff> ffff </fff>      #1-2.4-1.3-1.1-1.1
                <fff> ffff </fff>      #1-2.4-1.3-1.1-1.2
            </ddd>           #1-2.4-1.3-1.1(结束)
        </ccc>               #1-2.4-1.3(结束)
    </bbb>                   #1-2.4(结束)   
</aaa>                       #1(结束)

             
    

父节点(Parent):除了开始的节点外,之后每个节点都有自己的唯一的父节点,比如上面的aaa 就是4个bbb的父节点,ddd1.1是eee1.1、fff1.1、fff1.2的父节点。

子节点(Children):子节点可能有无数个也可能没有,比如上面的4个bbb节点就是aaa的子节点,eee1.1、fff1.1、fff1.2就是ddd1.1的子节点,

兄弟节点(Sibling):兄弟节点指的就是拥有相同父节点的节点。比如4个bbb节点就是兄弟节点,ccc1.1、ccc1.2就是兄弟节点,但是ccc1.1、ccc1.2与ccc1.3就不是兄弟节点,因为ccc1.3的父节点是bbb2.4,而ccc1.1、ccc1.2的父节点是bbb2.3.

先辈节点(Ancestor):先辈节点指的是父节点以上的节点,可能是某节点的父的父或者父的父的父等等以此类推。aaa是ccc1.1-1.3、ddd1.1、eee1.1、fff1.1、fff1.2的先辈节点。

后代节点(Descenadnt):后代节点指的是子节点以下的节点,可能是某节点的子的子节点、或者子的子的子节点。ccc1.1-1.3、ddd1.1、eee1.1、fff1.1、fff1.2都是aaa的后代节点。

三、绝对路径与相对路径

        在了解到各个节点之间的关系之后,就可以去进行元素的定位了,定位方式一般有两种, 相对路径和绝对路径。

绝对路径:比如我想找fff1.1这个元素,我们就可以先找到aaa然后找他的子元素bbb2.4然后再找其子元素ccc1.3然后再找子元素ddd1.1最后找到其子元素fff1.1,这样从根节点一路查找过来的就是相对路径的方法,这种定位方式比较直观,但是找起来比较麻烦,需要从根目录一级一级的查找。

相对路径:相对路径相比较绝对路径来说更加有效率,相对路径可以从任意节点开始去写,不用从根目录一级一级的查找下来,还是我们要找fff1.1这个元素,因为ddd元素是唯一的,我们可以直接定位到ddd1.1元素,然后再找他的子节点即可找到fff1.1的节点。

(上面是为了方便更容易找到其位置所以加上了X.X,实际上bbb是4个相同的元素、fff是两个相同的元素,如果想找到的话只能通过下标去进行准确的定位,下一篇文章会具体说明如何在相同的兄弟节点中找到自己想要的节点,这里只需要理解其概念就行)

        可以试着在浏览器的控制台,找到需要定位的元素,然后在其控制台的位置上右击直接复制其相对路径或者绝对路径去体验下,看看和自己实际想到的是不是一样。

 

        这篇文章先了解下Xpth的节点关系和路径查找方式,下一节用实际例子来说下,如何进行元素定位及其语法的写法。

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

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

相关文章

Vision Transformers for Dense Prediction论文笔记

文章目录Vision Transformers for Dense Prediction&#xff0c; ICCV&#xff0c; 2021一、背景介绍二、网络结构三、实验结果1.语义分割实验2.消融实验Vision Transformers for Dense Prediction&#xff0c; ICCV&#xff0c; 2021 一、背景介绍 本篇论文主要提出一种网络…

SpringBoot 集成webSocket

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

IT软件行业用契约锁实现“代理-销售-投标-项目-合作”电子签

IT软件行业产品销售渠道多、销售订单体量大&#xff0c;从产品研发、销售到项目实施&#xff0c;伴随着大量的协议、合同、单据需要与员工、客户或者经销商签署。引入电子签章&#xff0c;化解纸质合同签署带来的效率、成本、安全等问题&#xff0c;成为软件行业产品代理、销售…

Vector - CAPL - Panel面板_01

前面有过简单的介绍panel面板的功能&#xff0c;不过终究感觉有点简陋&#xff0c;最近也在搞PyQT5&#xff0c;发现如果对于这块了解不多的情况下&#xff0c;想要做一些东西的话&#xff0c;简直无从下手&#xff0c;因此专门翻阅了之前的文章&#xff0c;查看了下确实缺少了…

ChatGPT自动化提高工作效率: 2分钟快速生成思维导图

一、简要说明 ChatGPT不止是一个聊天机器人&#xff0c;更是一个自然语言处理、文本内容生成模型&#xff0c;它可以理解语言规则&#xff0c;不仅仅是给你输出已有的知识内容&#xff0c;还会给到你一些创意点子&#xff1b;所以我们应该学会如何使用它&#xff0c;让它更好的…

集合例题,

package com.hspedu.homework;import java.util.*;/*** author 韩顺平* version 1.0*/ SuppressWarnings({"all"}) public class Homework03 {public static void main(String[] args) {Map m new HashMap();m.put("jack", 650);//int->Integerm.put(&…

STL源码剖析-六大部件, 部件的关系,复杂度, 区间表示

C标准库-体系结构与内核分析 根据源代码来分析 介绍 自学C侯捷老师的STL源码剖析的个人笔记&#xff0c;方便以后进行学习&#xff0c;查询。 为什么要学STL&#xff1f;按侯捷老师的话来说就是&#xff1a;使用一个东西&#xff0c;却不明白它的道理&#xff0c;不高明&…

分享一个Vue输入框获取焦点自动选中指令

需求背景&#xff1a;最近项目中遇到很多输入类控件&#xff0c;且有频繁改动需求&#xff0c;如果数值过长&#xff0c;则需要一直按着删除键&#xff0c;于是想能不能获取焦点的时候&#xff0c;就直接选中&#xff0c;这样就可以直接删除了 1、思路分析 记得很早的时候做小…

顺序表的实现

思维导图&#xff1a; 一&#xff0c;顺序表 一&#xff0c;顺序表的创建&#xff08;位置&#xff1a;头文件内&#xff09; 1.1顺序表的结构体类型 要求&#xff1a;创建顺序表并使这个顺序表能够存放数据&#xff0c;能记录有效数据的个数&#xff0c;能够记录容量大小。…

记 ==> 首次使用rabbitMQ优化项目

昨天刚学习完了rabbitMQ&#xff0c;刚好我的项目有个模块挺符合使用rabbitMQ进行异步处理的。 这个模块大概功能是&#xff1a;用户发送的所有帖子都会添加到他的发件箱&#xff0c;当有个新用户关注了他&#xff0c;他发件箱内所有的博客都会被添加到关注他的用户的收件箱里…

binkw32dll缺失怎么办?如何解决binkw32dll修复问题

binkw32dll缺失怎么办&#xff1f;在使用某些计算机游戏或应用程序时&#xff0c;您可能遇到过binkw32dll缺失的问题。这意味着您的计算机无法找到该DLL文件&#xff0c;从而无法正常运行程序。在本文中&#xff0c;我们将探讨binkw32.dll缺失的可能原因并提供解决方案。 一.什…

python flask 接口平台开发

文章目录descFlaskFlask-SQLAlchemyflasggerdesc 考虑到开发的便捷性、生态的丰富程度&#xff0c;用Flask、Flask-SQLAlchemy、flasgger等编写一套简单易用的接口平台 这里记录以下这几个组件的使用方式 Flask 轻量、灵活&#xff0c;相比Django不用遵循太多的开发规范 F…

SSM整合的基本思路梳理

SSM整合的简单思路流程 基本思路 我在整合的时候一般习惯从MyBatis开始向上构建&#xff0c;也就是在开始一个项目的时候先将DAO层搭建起来&#xff0c;再向上整合Spring以及SpringMVC。按照这个流程&#xff0c;可以做出一个比较简单的大致流程作为参考&#xff0c;帮助我们…

企业为什么要做网站?这篇文章告诉你

在如今数字化的时代&#xff0c;企业为什么要做网站&#xff1f;这个问题一直都是企业主和市场营销人员必须要考虑的问题。本文将以一个真实的案例为例&#xff0c;解析为什么企业要做网站以及如何通过网站提升业务和品牌的影响力。 案例背景 以一家小型私人医疗诊所为例&…

【神经网络】tensorflow实验4--Matplotlib数据可视化

1. 实验目的 ①掌握Matplotlib绘图基础 ②运用Matplotlib&#xff0c;实现数据集的可视化 ③运用Pandas访问数据集 2. 实验内容 ①绘制散点图、直方图和折线图&#xff0c;对数据进行可视化 ②下载波士顿数房价据集&#xff0c;并绘制数据集中各个属性与房价之间的散点图&#…

人人可用的敏捷指标工具!Kyligence Zen 正式发布 GA 版

4 月 11 日&#xff0c;Kyligence 指标平台产品发布会成功召开。发布会上&#xff0c;一站式指标平台 Kyligence Zen 正式推出 GA 版&#xff0c;接下来这款人人可用的敏捷指标工具将以更加完善、成熟、稳定的产品性能与功能解决企业面临的指标管理、分析和应用痛点 &#xff0…

【信息论】一、信息与信息论

“The fundamental problem of communication is that of reproducing at one point either exactly or approximately a message selected at another point.” —— Claude Elwood Shannon 1.1 信息的定义 什么是信息&#xff1f;它与消息、信号之间有什么区别和联系&#…

指纹识别q

1、指纹传感器 FTIR(Frustrated Total Internal Reflection)&#xff0c;受抑全内反射。在屏幕的夹层中加入LED光线&#xff0c;当用户按下屏幕时&#xff0c;使夹层的光线造成不同的反射效果&#xff0c;感应器接收光线变化而捕捉用户的施力点。 明显的缺点&#xff1a;体积太…

弹塑性力学--应变硬化

在单轴拉伸试验中&#xff0c;当应力超过屈服强度后&#xff0c;需要施加更大的载荷产生更大的应力&#xff0c;才会使材料发生更多的塑性变形。随着塑性应变的增加&#xff0c;材料变得更强、更难以变形了&#xff0c;因此这个阶段称为“应变硬化”&#xff08;Strain Hardeni…

数据库----------唯一约束、默认约束、零填充约束

目录 1.唯一约束&#xff08;Unique&#xff09; 1.概念 2.语法 3.添加唯一约束 4.删除唯一约束 2.默认约束(default) 1.概念 2.语法 3.添加默认约束 4.删除默认约束 3.零填充约束&#xff08;zerofill&#xff09;了解即可 1.概念 2.操作 3.删除 1.唯一约束&…