PYTHON元素定位方式总结

news2024/11/27 7:38:35

一,常用的8种定位方式

id定位

  driver.find_element_by_id("id 值")
  driver.find_element(by = "id", value = "ID值" )

name定位

单个元素:
    driver.find_element_by_name("name值")
    driver.find_element(by = "name", value = "name值")

   多个元素:
    driver.find_elements_by_name("name值")
    driver.find_elements(by = "name", value = "name值")

class name定位

单个元素:
    driver.find_element_by_class_name("class 属性值")
    driver.find_element(by = "class name", value = "class 属性值")

   多个元素:
    driver.find_elements_by_class_name("class 属性值")
    driver.find_elements(by = "class name", value = "class 属性值")

tag定位

   单个元素:
    driver.find_element_by_tag_name("标签名称")
    driver.find_element(by = "tag name", value = "标签名称")

   多个元素:
    driver.find_elements_by_tag_name("标签名称")
    driver.find_elements(by = "tag name", value = "标签名称")

link定位

   单个元素:
    driver.find_element_by_link_text("链接全部文字内容")
    driver.find_element(by = "link text", value = "链接全部文字内容")

   多个元素:
    driver.find_elements_by_link_text("链接全部文字内容")
    driver.find_elements(by = "link text", value = "链接全部文字内容")

partial_link定位

   单个元素:
    driver.find_element_by_partial_link_text("链接部分文字内容")
    driver.find_element(by = "partial link text", value = "链接部分文字内容")

   多个元素:
    driver.find_elements_by_partial_link_text("链接部分文字内容")
    driver.find_elements(by = "partial link text", value = "链接部分文字内容")

xpath定位

   单个元素:
    driver.find_element_by_xpath("xpath 定位表达式")
    driver.find_element(by = "xpath", value = "xpath 定位表达式")

   多个元素:
    driver.find_elements_by_xpath("xpath 定位表达式")
    driver.find_elements(by = "xpath", value = "xpath 定位表达式")

css定位

   单个元素:
    driver.find_element_by_css("css定位表达式")
    driver.find_element(by = "css", value = "css定位表达式")

   多个元素:
    driver.find_elements_by_css("css 定位表达式")
    driver.find_elements(by = "css", value = "css定位表达式")


二,Xpath定位

使用绝对路径定位元素: /html/body/div/input[@value="查询"] 不建议使用

使用相对路径定位元素
    //input[@value="查询"]

使用索引号定位元素
    //div[last()-1]/a  倒数第二个div元素下的a标签
    //div/input[position()<2]  div元素下input的位置序列号小于2的input标签

使用页面元素多个属性值定位元素
    //div[@name="div1" and @value="div2"]/input[@name="div1input"]

使用模糊属性值定位元素
    //img[starts-with(@alt,"div1")  查找属性alt的属性值以div1开始的页面元素
    //img[contains(@alt,"img")]  查找属性alt的属性值包含img的页面元素

使用xpath轴定位元素
    //div[@name="div1"]/parent::input  查找name属性值为div1的div元素的父级input元素
    //div[@name="div1"]/child:img  查找name属性值为div1元素的子级img元素
    //div[@name="div1"]/following::img  查找name属性值为div1的div元素后面的所有img元素
    //div[@name='div1']/following-sibling::img  查找name属性值为div1的div元素后面所有兄弟img元素
    //div[@name='div1']/preceding::img  查找name属性值为div1的div元素前面的所有img元素
    //div[@name='div1']/preceding-sibling::img[1]  查找name属性值为div1的div元素前面的所有兄弟中的第一个img元素
    //div[@name='div1']/ancestor::img  查找name属性值为div1的div元素的所有上级的img元素
    //div[@name='div1']/descendant::img  查找name属性值为div1的div元素的所有下层的img元素

使用页面元素的文本定位元素
    //a[contains(text(), "百度")]  查找文本是“百度”的元素
    //a[text()="搜狐"]  查找文本是“搜狐”的元素

使用xpath运算符定位元素
    //div[a>9]  子元素中有a元素,文本值>9的div元素
    //div[a<10 and span =13]  子元素中有a元素,文本值>9 同时子元素span文本值=13的div元素


三,Css定位

 CSS定位方法:driver.find_element_by_css_selector()

CSS常用策略
    1. id选择器:driver.find_element_by_css_selector("#su")  查找id为su的元素
    2. class选择器:driver.find_element_by_css_selector(".bg_s_btn")  查找class属性值为bg_s_btn的元素
    3. 元素选择器:driver.find_element_by_css_selector("input")  查找所有input元素
    4. 属性选择器:driver.find_element_by_css_selector("[name='ie']")  查找name属性为ie的元素
    5. 层级选择器:driver.find_element_by_css_selector("div>[name='ie']")  查找div下的name属性为ie的元素  >可用空格代替  注意:直接子节点才能使用
    6. CSS延伸:
      input[type^='p']  找一个input元素,type属性的值以p开头
      input[type$='d']  找一个input元素,type属性的值以d结尾
      input[type*='w']  找一个input元素,type属性的值包含w

四,CSS元素定位与XPATH元素定位的对比

 

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

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

相关文章

总结:记一次docker调试镜像的问题

一、背景 同事让帮忙部署一个应用到QKE&#xff0c;给了我镜像地址与配置文件。 由于要将配置文件映射到容器中&#xff0c;我创建了configmap&#xff0c;然后应用中将configmap中key对应的内容映射到了容器中的配置文件中。 但是我遇到了一个问题&#xff1a; 容器频繁快…

100多的ipad触控笔好用吗?ipad可以用的手写笔推荐

随着IPAD的普及&#xff0c;一些学习党已经从传统的纸质教学走向了无纸化教学。所以&#xff0c;本来就是苹果品牌专利的电容笔&#xff0c;现在更是成为了炙手可热的产品&#xff0c;很多人都对这款售价近千元的电容笔充满了好奇。我认为&#xff0c;对于职业画师来说&#xf…

你“心累”吗?教你方法

解决“心累”的方法来了 前言一、“心累”的原因二、认识“心累”三、走出“心累”四、发现自己的“优势” 前言 不管是脑力劳动还是体力劳动&#xff0c;工作生活本身并没有多么累&#xff0c;但总感觉累。这就是我今天想说的话题&#xff1a;心累。 如果你也被这个状态折磨&a…

用好 mysql 分区表

为了保证mysql的性能&#xff0c;我们都建议mysql单表不要太大&#xff0c;也经常有人问我这样的问题&#xff0c;整体来说呢&#xff0c;建议是&#xff1a;单表小于2G&#xff0c;记录数小于1千万&#xff0c;十库百表。如果但行记录数非常小&#xff0c;那么记录数可以再偏大…

粮油企业MES系统源码 粮油质量管控防伪溯源系统

粮油企业MES系统源码 粮油企业质量管控防伪溯源系统源码 粮油企业ERP系统源码 农产品MES系统源码 农产品溯源系统源码 利用物联网、云计算 、区块链、人工智能、5G等先进技术&#xff0c;结合特有的码码关联和RSA加密验证技术&#xff0c;开发的一套粮油质量管控防伪溯源系统&…

C++ 设计模式 包装类型(Wrapper Type)的运用:运算符重载的包装类型策略

目录标题 1. 运算符重载与包装类型&#xff08;Wrapper Type&#xff09;1.1 运算符重载的基本概念1.2 包装类型的定义与应用1.3 运算符重载与包装类型的结合 2. 包装类型的设计与实现2.1 包装类型的基本设计2.2 运算符重载的实现2.3 包装类型与原始类型的转换 3. 包装类型的性…

基于jsp+mysql+Spring+mybatis+Springboot的SpringBoot停车场停车位管理系统

运行环境: 最好是java jdk 1.8&#xff0c;我在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以&#xff0c;如果编译器的版本太低&#xff0c;需要升级下编译器&#xff0c;不要弄太低的版本 tomcat服务器环…

阿里巴巴内部10w字Java面试小抄火了,完整版开放下载

Java 面试 “金九银十”这个字眼对于程序员应该是再熟悉不过的了&#xff0c;每年的金九银十都会有很多程序员找工作、跳槽等一系列的安排。说实话&#xff0c;面试中 7 分靠能力&#xff0c;3 分靠技能&#xff1b;在刚开始的时候介绍项目都是技能中的重中之重&#xff0c;它…

【3步教程】如何使用商城小程序源码打造自己的商城?

作为电商行业的领头人&#xff0c;在移动端上拥有一款独立小程序绝对是不能缺少的&#xff0c;而使用商城小程序源码打造自己的商城则是最佳的选择之一。本文将教您如何在3步之内&#xff0c;快速高效地使用商城小程序源码&#xff0c;打造属于自己的小程序商城。 步骤一&…

深度解析Java程序员从入行到被裁全过程

很多年以前&#xff0c;我拿着 2000 的月薪入职了一家电商创业公司&#xff0c;整个公司只有一个会画饼的老板和啥也不会的我。 一切都是从零开始。 入职第一天&#xff0c;老板说我们首先需要一个网页。 于是我现学现卖了 HTML、CSS、JavaScript&#xff0c;做出来的界面大…

从古至今数据安全的守护者:哈希算法和加密方法的数据安全进化之旅

1、哈希算法进化史 在当今的数字化世界中&#xff0c;数据的安全性和完整性是至关重要的。哈希算法作为一种核心的密码学工具&#xff0c;用于生成数据的唯一标识和验证数据的完整性。然而&#xff0c;随着技术的进步和安全威胁的不断演化&#xff0c;早期的哈希算法逐渐暴露出…

【计算机组成与体系结构Ⅰ】章节测试(4)

指令系统采用不同寻址方式的目的是( ) A&#xff0e;实现存贮程序和程序控制 B&#xff0e;缩短指令长度&#xff0c;扩大寻址空间&#xff0c;提高编程灵活性 C&#xff0e;可直接访问外存 D&#xff0e;提供扩展操作码的可能并降低指令译码的难度 下列寻址方式中&#xf…

【C51】10-基础51单片机的小车项目(51完结)

10.1小车的安装 10.2电机模块的开发&#xff08;L9110S&#xff09; 接通 VCC &#xff0c; GND 模块电源指示灯亮&#xff0c; 以下资料来源官方&#xff0c;但是不对&#xff0c;根据下节课实际调试 IA1 输入高电平&#xff0c; IA1 输入低电平&#xff0c;【 OA1 OB1 】电…

IIC电平转换电路原理分析

一&#xff0c;简介 本文主要介绍IIC电平转换电路的原理&#xff0c;记录总结。 二&#xff0c;准备知识&#xff08;芯片介绍AW39114BQNR&#xff09; 登录官网&#xff0c;搜索该芯片的名称&#xff0c;查看对应的芯片手册。 芯片介绍&#xff1a; 典型应用电路&#xf…

【RISCV】RISCV e-906实现Tickless

Tickless 最初设计的思想是,能被任务唤醒,也能被中断唤醒 参考文章: freeRTOS 低功耗模式 和 空闲任务 FreeRTOS源码分析与应用开发09:低功耗Tickless模式 FreeRTOS学习十(低功耗) 【STM32】NVIC与中断控制 之 sysTick定时器 M3,M4实现tickleess的做法: M3,M4的机制:…

AIGC时代,基于云原生 MLOps 构建属于你的大模型(上)

为了满足企业在数字化转型过程中对更新迭代生产力工具的需求&#xff0c;灵雀云近日推出了云原生 MLOps 解决方案&#xff0c;帮助企业快速落地AI技术、实现智能化应用和服务。 为什么要打造云原生MLOps解决方案&#xff1f; 随着信息化技术的不断发展&#xff0c;企业在数字化…

什么是真正的骨传导耳机,几款不错的骨传导蓝牙耳机分享

骨传导耳机是通过耳朵传声方式&#xff0c;提高了听神经的使用频率&#xff0c;对听觉系统所产生刺激会随之下降。目前骨传导耳机主要应用于运动和娱乐两大领域&#xff0c;尤其是在运动场景中骨传导耳机能够避免传统耳机因佩戴入耳式耳机造成的听力下降问题&#xff0c;更能增…

vue播放rtsp流方案(支持h265)

前提 如果你的rtsp流不是h265的&#xff0c;可以使用webRtc-stream进行播放&#xff0c;我测试延迟1.5秒左右 参考链接: link 这个操作也挺方便的&#xff0c;也就是下载&#xff0c;启动 如果是h265&#xff0c;可以使用ffmpeg node rest2web jsmpeg方案。这个优点是特别快…

如何用Java代码操作数据库(JDBC编程)

目录 JDBC编程的由来 JDBC编程的准备工作 1. 下载数据库驱动包 2. 将jar包作为标准库​编辑 3. 编写JDBC代码&#xff08;需要通过下面几个步骤完成开发&#xff09; &#xff08;1&#xff09;JDBC编程&#xff08;在数据库中插入一条记录&#xff09; 运行结果&#xff1a;…

ZEPPELIN部署接入华为云MRS

ZEPPELIN部署接入华为云MRS 安装zeppelin配置Spark连接常见问题连接pg报错 Py4JJavaError: An error occurred while calling o779.load. : org.postgresql.util.PSQLException: The authentication type 5 is not supported. Check that you have configured the pg_hba.conf …