当前位置: 首页 > news >正文

Selenium基础 — CSS选择器定位大全

1、css属性定位

css选择器策略示例说明
#id#telA选择id="telA"的所有元素。
.class.telA选择 class="telA”的所有元素。
[属性名=属性值][name=telA]除了id和class属性,其他属性的定位格式
[attribute][target]选择带有target 属性所有元素。
**选择所有元素。

2、css属性值模糊匹配定位

css选择器策略示例说明
[attribute^=value]a[src^="https"]选择其src 属性值以"https”开头的每个<a>元素。
[attribute$=value]a[src$=".pdf"]选择其src属性以".pdf“结尾的所有<a>元素。
[attribute*=value]a[src*="abc"]选择其src 属性中包含“abc"子串的每个<a>元素。
[attribute~=value]a[title~=flower]定位标签属性title值中有独立flower词汇的节点
[attribute=value]a[lang=en]用于选取带有以指定值开头的属性值的元素。

注意:[attribute|=value]
该值必须是整个单词,比如 lang="en",或者后面跟着连字符,比如 lang="en-us"。文章地址https://www.yii666.com/blog/409796.html

3、css标签定位

css选择器策略示例说明
elementp定位所有<p>元素。
标签名[属性名=属性值]input#telA定位id属性值为telA的所有<input>元素

4、css层级关系定位

css选择器策略示例说明
element,elementdiv,p选择所有 <div> 元素和所有 <p> 元素。
element elementdiv p选择 <div> 元素内部的所有 <p> 元素。包括子孙后代。
element>elementdiv>p选择父元素为 <div> 元素的所有 <p> 元素。只包括子代。
element+elementdiv+p选择紧接在 <div> 元素之后的所有 <p> 元素。同辈元素。

示例:

css选择器策略示例说明
需要使用 > 或 空格表示层级关系语法
父标签名[父标签属性名=属性值]>子标签名p#p1>input定位id属性值为p1的<input>元素
父标签名[父标签属性名=属性值] 子标签名p#p1 input同上

5、css索引定位

css选择器策略示例说明
:only-childp:only-child选择属于其父元素的唯一子元素的每个 <p> 元素。
:nth-child(n)p:nth-child(2)选择属于其父元素的第二个子元素的每个 <p> 元素。
:nth-last-child(n)p:nth-last-child(2)同上,从最后一个子元素开始计数。
:nth-of-type(n)p:nth-of-type(2)选择属于其父元素第二个 <p> 元素的每个 <p> 元素。
:nth-last-of-type(n)p:nth-last-of-type(2)同上,但是从最后一个子元素开始计数。

6、css逻辑运算定位

css选择器策略逻辑定位
示例标签名[属性名1=属性值1][属性名2=属性值2]
示例input[type='telA'][placeholder='电话A']
说明同时匹配多个属性

7、css元素状态定位

选择器例子例子描述
:emptyp:empty选择没有子元素的每个 <p> 元素(包括文本节点)。
:target#news:target选择当前活动的 #news 元素。
:enabledinput:enabled选择每个启用的 <input> 元素。
:disabledinput:disabled选择每个禁用的 <input> 元素
:checkedinput:checked选择每个被选中的 <input> 元素。
:not(selector):not(p)选择非 <p> 元素的每个元素。

七 、总结

  • 如果元素有明确idnameclass属性时,使用对应的基本定位方法。
  • 如果没有idnameclass属性时,或idnameclass属性是动态/不唯一的时候,使用XPathcss_selector定位。
  • 定位页面超链接使用link_textpartial_link_text定位
  • 可使用XPathcss_selector定位的时候,优先使用css_selector
    css_selector定位的速度和效率比Xpath高。
  • 没有最好的,只有最精简的,怎么简单怎么来。

扩展:为什么css_selector定位的速度和效率比Xpath高?
因为你无论用那种方式定位,最终都会转换到css_selector进行元素定位。
我们可以在PyCharm中,安装ctrl点击对应的方法,进行查看源码,最终都会定位到如下代码:

  def find_element(self, by=By.ID, value=None):"""Find an element given a By strategy and locator. Prefer the find_element_by_* methods whenpossible.:Usage:element = driver.find_element(By.ID, 'foo'):rtype: WebElement"""if self.w3c:if by == By.ID:by = By.CSS_SELECTORvalue = '[id="%s"]' % valueelif by == By.TAG_NAME:by = By.CSS_SELECTORelif by == By.CLASS_NAME:by = By.CSS_SELECTORvalue = ".%s" % valueelif by == By.NAME:by = By.CSS_SELECTORvalue = '[name="%s"]' % valuereturn self.execute(Command.FIND_ELEMENT, {'using': by,'value': value})['value']

相关文章:

Selenium基础 — CSS选择器定位大全

1、css属性定位 css选择器策略示例说明#id#telA选择id"telA"的所有元素。.class.telA选择 class"telA”的所有元素。[属性名属性值][nametelA]除了id和class属性&#xff0c;其他属性的定位格式[attribute][target]选择带有target 属性所有元素。**选择所有元素…...

vue3中keep-alive的使用及结合transition使用

正确用法 在组件中使用&#xff08;这里结合了 transition 内置动画组件 &#xff09; <template><div class"layout clearfix"><router-view v-slot"{ Component, route }"><transition name"fade-transform" mode"…...

【提示工程】询问GPT返回Json结构数据

theme: orange 众所周知&#xff0c;我们可以通过构建的Prompt获取期望的内容&#xff0c;但是通常都是以自然语言返回的&#xff0c;假如我们想得到结构化的数据&#xff0c;比如Json&#xff0c;XML那么怎么办&#xff0c;这篇文章给你一个思路。 理所当然的想法 要实现询问大…...

CSS水平垂直居中方案

1 前言 水平居中、垂直居中是前端面试百问不厌的问题。其实现方案也是多种多样&#xff0c;常叫人头昏眼花。 水平方向可以认为是内联方向&#xff0c;垂直方向认为是块级方向。 2 内联元素的水平垂直居中 首先&#xff0c;常见内联元素有&#xff1a;a、span、em、b、stro…...

SpringBoot入门篇3 - 整合junit、整合mybatis、基于SpringBoot实现ssm整合

目录 1.整合JUnit Spring整合JUnit SpringBoot整合JUnit 测试类注解&#xff1a;SpringBootTest 作用&#xff1a;设置JUnit加载的SpringBoot启动类 2.整合mybatis ①使用spring initializr初始化项目的时候&#xff0c;添加依赖。 ②设置数据源application.yml spring:d…...

C#,《小白学程序》第七课:列表(List)应用之一“编制高铁车次信息表”

1 文本格式 /// <summary> /// 车站信息类 class /// </summary> public class Station { /// <summary> /// 编号 /// </summary> public int Id { get; set; } 0; /// <summary> /// 车站名 /// </summary>…...

周报/月报 Prompt

前言 用 AI 写好一份周报或月报。 文章目录 前言一、目的二、Prompt 设计原则三、模板 一、目的 简单的日程&#xff0c;扩写成一篇高质量的周报&#xff1b; 二、Prompt 设计原则 角色 目标 背景 要求 三、模板 内容生成模板 你是我的周报助手&#xff0c;根据我的工作…...

c++ 学习 之 构造函数的分类和调用类型 深入学习

正文 构造函数是在C中用于创建和初始化对象的特殊函数。构造函数可以根据不同的特性和参数进行分类&#xff0c;以下是一些常见的构造函数分类和详细讲解它们的调用方式&#xff1a; 默认构造函数&#xff1a; 默认构造函数是一个特殊的构造函数&#xff0c;它没有参数&#x…...

Royal TSX 6 Mac多协议远程软件

Royal TSX是一款功能强大的远程桌面管理软件&#xff0c;适用于Mac操作系统。它允许用户通过一个集成的界面来管理和访问多个远程计算机和服务器。 Royal TSX支持多种远程协议&#xff0c;包括RDP、VNC、SSH、Telnet和FTP等&#xff0c;可以方便地连接到Windows、Linux、Mac和其…...

远程管理通道安全SSH协议主机验证过程

可以使用SSH协议进行远程管理通道安全保护&#xff0c;其中涉及的主要安全功能包括主机验证、数据加密性和数据完整性保护。 这里要注意的是【主机验证】和【身份验证】的区别&#xff0c;主机验证是客户端确认所访问的服务端是目标访问对象&#xff0c;比如从从客户端A(192.16…...

.NET 操作 TDengine .NET ORM

TDengine 是国内比较流的时序库之一&#xff0c;支持群集并且免费&#xff0c;在.NET中资料比较少&#xff0c;这篇文章主要介绍SqlSugar ORM来操作TDengine 优点&#xff1a; 1、SqlSugar支持ADO.NET操作来实现TDengine&#xff0c;并且支持了常用的时间函数、支持联表、分…...

SQL Server对象类型(3)——视图(View)

1. 视图概念 与Oracle中的视图类似,SQL Server中的视图也是一种虚的、通过一个查询定义的逻辑对象,主要用于集中、简化、定制用户需求,控住其底层表安全,以及应用系统提供向后兼容等方面。 --注: 1)上述内容中的“虚的”,表示视图本身并不实际包含和存储数据,SQL Ser…...

【LeetCode】剑指 Offer <二刷>(1)

目录 前言&#xff1a; 题目&#xff1a;剑指 Offer 03. 数组中重复的数字 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 前言&#xff1a; …...

MySQL事物和存储引擎

事务 一、MySQL事务的概念 事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#xff0c;要么都不执行。 事务是一个不可分割的工作逻辑单…...

代码随想录算法训练营Day51 | 309. 最佳买卖股票时机含冷冻期 | 714. 买卖股票的最佳时机含手续费 | 股票总结

文章目录 309. 最佳买卖股票时机含冷冻期标准 dp机智的分析解法 714. 买卖股票的最佳时机含手续费贪心算法 股票总结 309. 最佳买卖股票时机含冷冻期 题目链接 | 解题思路 标准 dp 本题多了冷却期的条件&#xff0c;将原本的两个状态变得更复杂了。变化在于&#xff0c;如果…...

C#,《小白学程序》第八课:列表(List)应用之二“编制高铁列车时刻表”

1 文本格式 /// <summary> /// 车站信息类 class /// </summary> public class Station { /// <summary> /// 编号 /// </summary> public int Id { get; set; } 0; /// <summary> /// 车站名 /// </summary&g…...

2、QT的信号与槽

一、什么是信号与槽 一个对象发送一个信号出去&#xff0c;另外一个对象接收到该信号后&#xff0c;会触发相应的槽函数 二、信号与槽的语法 connect(信号的发送者&#xff0c;SIGNAL(信号名称),信号的接收者,SLOT(槽函数)); 1、写法&#xff1a; QT 4 的写法 connect(sende…...

Java代码审计15之Apache log4j2漏洞

文章目录 1、log4j简介2、复现2.1、高版本测试2.2、测试代码2.3、补充之dns探测2.3.1、rmi、ldap也可以dnslog探测 2.3.2、dnslog外带信息 3、漏洞原理3.1、漏洞的危害大的背景3.2、具体的代码调试 4、靶场测试4.1、dns探测4.2、工具下载与使用4.3、测试4.4、手工可以测出&…...

c语言每日一练(13)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;上学期间将看学业情况更新。 五道选择题&#xff1a; 1、程序运行的结果…...

H5 + C3基础(六)(2D转换transform 位移 旋转 缩放)

2D转换transform & 2D转换transform平移利用平移百分比优化盒子水平垂直居中 旋转指定2d变换的中心点 transform-origin 缩放2d转换简写 2D转换transform 所谓2D转换&#xff0c;就是在二维坐标系内进行各种操作&#xff0c;包括平移&#xff0c;转动&#xff0c;缩放等等…...

使用taotoken的openai兼容协议为ubuntu上的python脚本赋能

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用 Taotoken 的 OpenAI 兼容协议为 Ubuntu 上的 Python 脚本赋能 基础教程类&#xff0c;详细讲解在 Ubuntu 20.04 中&#xff0…...

新手学习Linux系统的11点建议

随着Linux应用的扩展许多朋友开始接触Linux&#xff0c;根据学习Windwos的经验往往有一些茫然的感觉&#xff1a;不知从何处开始学起。这里介绍学习Linux的一些建议。一、从基础开始&#xff1a;常常有些朋友在Linux论坛问一些问题&#xff0c;不过&#xff0c;其中大多数的问题…...

AI智能体Skills设计:从API工具到核心能力的工程实践

1. 从“工具”到“能力”&#xff1a;重新理解AI智能体的Skills最近和几个做AI应用开发的朋友聊天&#xff0c;发现一个挺有意思的现象&#xff1a;大家一提到给智能体加“Skills”&#xff0c;第一反应往往是去翻看官方文档&#xff0c;找那个叫“Tools”或者“Functions”的列…...

【AI面试八股文 Vol.3.5:推理幻觉规模定律】CoT、幻觉与 Scaling Law:为什么模型会推理,也会一本正经胡说

摘要&#xff1a;这篇会把 CoT、幻觉和 Scaling Law 放到同一条工程主线上&#xff1a;CoT 不是教模型思考&#xff0c;而是触发模型把隐式路径显式写出来&#xff1b;幻觉不是单一 bug&#xff0c;而是训练知识边界、解码策略和指令跟随压力叠加后的结果&#xff1b;Scaling L…...

3步终极解决方案:如何专业卸载Windows 10/11的Microsoft Edge浏览器

3步终极解决方案&#xff1a;如何专业卸载Windows 10/11的Microsoft Edge浏览器 【免费下载链接】EdgeRemover A PowerShell script that correctly uninstalls or reinstalls Microsoft Edge on Windows 10 & 11. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemo…...

深度解析ESLyric-LyricsSource:Foobar2000逐字歌词插件的终极技术方案

深度解析ESLyric-LyricsSource&#xff1a;Foobar2000逐字歌词插件的终极技术方案 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource ESLyric-LyricsSource是…...

从‘挨个找孔’到‘算角度’:一个VisionMaster项目优化带来的效率翻倍实录

从‘挨个找孔’到‘算角度’&#xff1a;一个VisionMaster项目优化带来的效率翻倍实录 在工业自动化领域&#xff0c;视觉识别系统的效率往往直接决定整条产线的节拍。去年我们团队接手了一个法兰盘螺丝锁付项目&#xff0c;最初采用的传统孔位识别方案在实际运行中暴露出诸多问…...

Hermes Agent项目如何接入Taotoken作为自定义模型提供商

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Hermes Agent项目如何接入Taotoken作为自定义模型提供商 Hermes Agent 是一个功能强大的 AI 代理框架&#xff0c;它支持通过自定义…...

TabNet: Attentive Interpretable Tabular Learning——一种具有可解释性的注意力表格学习模型

文章提出了一种名为 TabNet 的新型深度神经网络架构&#xff0c;专门用于处理表格数据。该架构旨在结合决策树&#xff08;DT&#xff09;的优势&#xff08;如可解释性、处理表格数据的高效性&#xff09;与深度神经网络&#xff08;DNN&#xff09;的优势&#xff08;如端到端…...

ABAP系统实现OAuth 2.0最小权限控制的原生方案

1. 这不是一次“配个Token就完事”的集成——为什么ABAP系统里OAuth 2.0落地总卡在“权限过宽”这道坎上你有没有遇到过这样的场景&#xff1a;前端调用SAP Fiori应用&#xff0c;后端ABAP系统需要校验用户身份和操作权限&#xff1b;团队决定上OAuth 2.0&#xff0c;理由很充分…...