CSS 选择器使用手册
Posted on Wed, 25 Dec 2024 16:13:45 +0800 by LiangMingJian
概述
CSS 选择器是 CSS(层叠样式表)提供的一种 HTML 元素定位选择工具,该工具常用于 CSS 文件编写和 Selenium 浏览器自动化。
标签选择器
使用 HTML 标签名(a,div,ul)作为选择器定位元素。
在使用时,直接使用标签名进行标识。
CSS 代码
div {
color: orange;
}
Selenium 代码
element = driver.find_element(By.CSS_SELECTOR, "div")
类选择器
使用标签中的 class='name' 属性进行元素定位。
在使用时,通过点 . 加类名进行标识。
CSS 代码
.name {
color: orange;
}
Selenium 代码
element = driver.find_element(By.CSS_SELECTOR, ".name")
ID 选择器
使用标签中唯一的 id='name' 属性进行元素定位。
在使用时,通过井号 # 加 ID 名进行标识。
CSS 代码
#name {
color: orange;
}
Selenium 代码
element = driver.find_element(By.CSS_SELECTOR, "#name")
父子选择器
又称派生选择器,根据 HTML 元素包含关系来对内层元素进行选择。
在使用时,使用空格按层级将不同选择器组合使用。
比如要选中下面 div 标签内的 span,而不是另外一个 span 时,代码可以是:
<div id='mydiv'>
<p>
<span>123</span>
</p>
</div>
<span>123</span>
CSS 代码
div p span {
color: orange;
}
Selenium 代码
element = driver.find_element(By.CSS_SELECTOR, "div p span")
在实际使用时,父子选择器可以跨层级使用,比如直接 div span 跨过 p 标签,也可以结合类选择器和 ID 选择器一起使用,比如 #mydiv p span 使用 ID 选择器指定第一个元素,再按层次写入。
直接子元选择器
与父子选择器类似,但直接子元选择器只能选择最近一级的元素,禁止跨层。
在使用时,使用尖括号 > 按层级逐个将不同选择器组合使用。
比如要选中下面 div 标签内 strong 标签里的 em 元素,代码可以是:
<div>
<p>123</p>
<strong>
<em>234</em>
</strong>
</div>
CSS 代码
div > strong > em {
color: orange;
}
Selenium 代码
element = driver.find_element(By.CSS_SELECTOR, "div > strong > em")
再次提醒,直接子元选择器必须逐层使用,禁止跨层,比如 div > em 是无法定位的。
其他选择器
下面的这些选择器大部分情况下只适用于 CSS 文件,在 Selenium 使用时,会有概率无法使用,请自行识别。
链接伪类选择器
a:link:定位一个未点击过的超链接 a 标签a:visited:定位一个访问过的超链接 a 标签a:hover:定位一个鼠标指针悬停时的超链接 a 标签a:active:定位一个鼠标点击但是没松手(激活)时的超链接 a 标签
结构伪类选择器
selector:first-child:定位一组兄弟元素中的第一个元素selector:last-child:定位一组兄弟元素中的最后一个元素selector:nth-child(n):定位一组兄弟元素中的第 n 个元素selector:nth-last-child(n):定位一组兄弟元素中倒序的第 n 个元素selector:first-of-type:定位一组同类型兄弟元素中的第一个元素selector:last-of-type:定位一组同类型兄弟元素中的最后一个元素selector:nth-of-type(n):定位一组同类型兄弟元素中的第 n 个元素selector:nth-last-of-type(n):定位一组同类型兄弟元素中倒序的第 n 个元素
否定伪类选择器
selector:not(selector):在选择时,除了某一个标签外的其他元素都选择
通配符选择器
*:定位选取所有元素