【Playwright 学习笔记 03】CSS选择器 定位方法

选择 子元素 和 后代元素

HTML中, 元素 内部可以 包含其他元素, 比如 下面的 HTML片段

python 复制代码
<div id='container'>
    <div id='layer1'>
        <div id='inner11'>
            <span>内层11</span>
        </div>
        <div id='inner12'>
            <span>内层12</span>
        </div>
    </div>

    <div id='layer2'>
        <div id='inner21'>
            <span>内层21</span>
        </div>
    </div>
</div>

id 为 layer1layer2 的两个div元素 是 id 为 container 的div元素 的 直接子元素

对于 id 为 container 的div元素来说, id 为 inner11inner12inner22 的元素 和 两个 span类型的元素 都不是 它的直接子元素, 因为中间隔了 几层。

虽然不是直接子元素, 但是 它们还是在 container 的内部, 可以称之为它 的 后代元素

────────────────────────────────────────────────────────────

选择方法

如果 元素2元素1直接子元素, CSS Selector 选择子元素的语法是这样的

php 复制代码
元素1 > 元素2

更多层级的选择, 比如

php 复制代码
元素1 > 元素2 > 元素3 > 元素4

++最终选择元素4++

────────────────────────────────────────────────────────────

如果 元素2元素1后代元素, CSS Selector 选择后代元素的语法是这样的

php 复制代码
元素1   元素2

更多层级的选择, 比如

objectivec 复制代码
元素1   元素2   元素3  元素4

++中间是一个或者多个空格隔开++

────────────────────────────────────────────────────────────

根据属性选择

(除了id、class其他属性的选择方法)

css 选择器支持通过任何属性来选择元素,语法是用一个方括号 []

python 复制代码
<a href="http://www.miitbeian.gov.cn">苏ICP备88885574号</a>

比如要选择上面的a元素,就可以使用 [href="http://www.miitbeian.gov.cn"]

前面也可以加上标签名的限制,比如**a****[href="http://www.miitbeian.gov.cn"]表示 选择所有 标签名为 a ,且 属性 href值为http://www.miitbeian.gov.cn** 的元素

CSS 还可以选择 属性值 **包含**某个字符串 的元素

比如, 要选择a节点,里面的href属性包含了 miitbeian 字符串,就可以这样写

python 复制代码
a[href*="miitbeian"]

还可以 选择 属性值 以某个字符串 开头 的元素

比如, 要选择a节点,里面的href属性以 http 开头 ,就可以这样写

python 复制代码
a[href^="http"]

还可以 选择 属性值 以某个字符串 结尾 的元素

比如, 要选择a节点,里面的href属性以 gov.cn 结尾 ,就可以这样写

python 复制代码
a[href$="gov.cn"]

如果一个元素具有多个属性

python 复制代码
<div class="misc" ctype="gun">沙漠之鹰</div>

CSS 选择器 可以指定 选择的元素要 同时具有多个属性的限制,像这样 div[class=misc][ctype=gun]

────────────────────────────────────────────────────────────

选择语法联合使用

比如, 我们要选择 如下网页中 html 中的元素 版权1 对应的 span

python 复制代码
<div id='bottom'>
    <div class='footer1'>
        <span class='copyright' name='cp1'>版权1</span>
        <span class='copyright' name='cp2'>版权2</span>
        <span class='copyright1' name='cp1'>版权3</span>
    </div>
    <div class='footer2'>
        <span class='copyright' name='cp1'>版权4</span>
    </div>        
</div>

CSS selector 表达式 可以这样写:

python 复制代码
.footer1 > .copyright[name=cp1]

────────────────────────────────────────────────────────────

组选择

如果我们要 同时选择所有classplant class 为 animal 的元素。怎么办?

这种情况,css选择器可以 使用 逗号 ,称之为 组选择 ,像这样

python 复制代码
.plant , .animal

我们要选择所有 唐诗里面的作者和诗名, 也就是选择所有 id 为 t1 里面的 spanp元素

我们是不是应该这样写呢?

python 复制代码
#t1 > span,p

不行哦,这样写的意思是 选择所有 idt1里面的span所有的 p 元素

只能这样写

复制代码
#t1 > span , #t1 > p
相关推荐
果壳science11 分钟前
《自然本源》如何实现狭义相对论的代数化
笔记·算法·几何学
1314lay_100717 分钟前
C#调用Sql Server存储过程,并且使用传入表结构
数据库·经验分享·笔记·sqlserver·c#
传奇开心果编程18 分钟前
【Xilem 0.4 基础语法学与练】第二课视图修饰符、列表渲染、组件拆分、memoize 性能优化
学习·rust·前端框架
szarron32 分钟前
RF Demo Kit|NanoVNA 射频演示测试板完整上手教程,滤波器、衰减器、SOLT 校准学习板
开发语言·人工智能·学习·php·射频工程·频谱仪
A_nanda37 分钟前
学习工业相机的大纲
学习·工业相机
边境悍匪44 分钟前
蜗牛学苑 Java 智能体学习 Day39|SpringAI 会话存储、Function‑Call 工具调用、MCP 思维导图复盘
java·开发语言·spring boot·学习·阿里云
志尊宝1 小时前
Vue3 零基础每日笔记(015):条件渲染 v-if 与 v-show——控制 DOM 生死还是控制显隐
前端·vue.js·笔记
woodykissme1 小时前
齿轮测量系列——齿轮测量这二十年
学习·机械·齿轮检测
sunshine22 girl2 小时前
Java学习一 环境配置3 Idea中的maven仓库,pom.xml文件配置
学习·maven·intellij-idea
GIS好难学3 小时前
想转GIS开发,企业会卡专业背景吗?
学习·gis·gis开发·webgis