" />

飞道的博客

标梵教你使用 CSS 选择器定位网页元素

316人阅读  评论(0)

css选择器在 web 领域应用非常普遍,不管是前端工程师还是 ui 自动化测试,使用 css 选择器都能精准快速定位到自己想要的元素。css 选择器的内容不是很多,稍微花一点时间就可以直接上手,在应用中就能逐渐掌握,当遇到一个表达式不是很熟练的时候,可以再回来查一下这篇文章。

先来看一下怎么使用 css 选择器。写一个简单的登录界面 HTML :

<div class="container">
<h2 class="title">登录</h2>
<form id="loginForm" action="/login" method="post">
<div>
<label>用户名</label>
<input name="username">
</div>
<div>
<label>密码</label>
<input name="password">
</div>
<div>
<input type="submit" value="登录">
</div>
</form>
</div>

使用  chrome 浏览器打开这个页面,按 F12 进入开发者调试工具,在工具界面按 ctrl + f 就可以输入 css 选择器表达式了。

 

在输入框中输入 .container 这个css选择器,就能找到页面中的最外层的div标签。

你也可以通过在开发者工具的console中输入 $(.container),同样可以找到最外层的div标签。

 

前端工程师还需要经常使用 css 选择器编写页面样式,比如通过 css 选择器把 h2 标签的颜色改成红色:

 

h2 {
color: red
}

上面的操作会把页面渲染成这样:

 

 

基本选择器

我们编写的.container 就是css 中的基本选择器,表示选择 class 属性包含 container 的元素。

1、*

示例:*#loginForm

含义:通用选择器,可以选择任意元素。示例表示选择 id 属性为 loginForm 的任意元素。

2、element

示例:form

含义:根据元素名称选择元素。示例表示选择标签名为 form 的元素。

3、#

示例:#loginForm

含义:根据元素 id 选择元素。示例表示选择 id 属性为 loginForm 的元素。

4、.

示例:.container

含义:根据元素 class 属性选择元素。示例表示选择 class 属性包含 contianer 的元素。

5、[attr=value]

示例:[name="username"]

含义:根据元素属性选择元素。示例表示选择 name  属性等于 username 的元素。

 

属性选择器

属性选择器就是 [prop=value] 这种语法,它不仅支持相等操作,还有其他一些额外的用法也经常使用。

1、[attr]

示例:[name]

含义:具备 name 属性的元素

2、[attr*=value]

示例:[name*="user"]

含义:name 属性包含 user 的元素

3、[attr^=value]

示例:[name^="user"]

含义:name 属性以 user 开头的元素

4、[attr$=value]

示例:[name$="sername"]

含义:name 属性以 sername 结尾的元素

5、[attr~=value]

示例:[name~="username"]

含义:name 属性为 username,或者是一个以空格作为分隔的值列表,其中至少有一个值为 username,比如 name="username beauty"

6、[attr|=value]

示例:[name|="username"]

含义:name 属性为username,或者以username-作为前缀。比如 name="username-beauty"

组合选择器

组合选择器可以组合多个元素,当使用一个元素不能达到效果时,可能会把两个甚至多个元素组合在一起进行选择。比如想选择 div 标签下的 form 标签,就需要用到组合选择器,更准确的说,是后代选择器,用 div form 表示。

除了后代选择器,组合选择器还有其他表示。

1、div > h2

子代选择器。表示 div 标签下第一级子标签 h2,中间不能有其他层级。

2、label ~ input

兄弟选择器。表示 input 在 label 标签后面,并且共享同一个父节点。

3、label + input

紧邻兄弟选择器。表示 input 紧跟在 label 标签后面,并且共享同一个父节点,而 label ~ input 可以在两个元素中间插入其他的元素。

4、label, input

合并选择器。表示同时选择 label 和 input 元素。

 

伪元素和伪类

如果在html 中看到类似 :first-child 或者 :hover 这样的,你就是看到了一个伪元素或者伪类。举一些经常使用的伪类选择器。

1、:first-child

该元素是父级元素下的第一个子元素。

2、:last-child

该元素是父级元素下最后一个元素。

3、:nth-child(2)

该元素是父级元素下第 2 个元素,2可以修改。

4、:nth-last-child(2)

该元素是父级元素下倒数第 2 个元素。

5、:nth-of-type(2)

该元素是祖先元素下第 2 个元素,并且祖先元素名称和该元素一致。

 

css 选择器和 xpath 的比较

xpath 是另一种定位网页元素的技术,我们可以写一些例子对比一下它们之间的区别。

1、通过 id 定位

css:#loginForm

xpath://*[@id="loginForm"]

2、通过 class 定位

css:.container

xpath://*[@class="container"]

3、通过 name 属性定位

css:[name="username"]

xpath://*[@name="username"]

4、通过父子关系定位

css:div > h2

xpath://div/h2

5、通过祖先关系定位

css:div form

xpath://div//form

大体来说:

1、css 更加简洁,xpath 写法更复杂。

2、css 的检索效率更高。

3、css 支持伪元素和伪类。

4、xpath 支持函数,功能上更强大。

5、css 不支持通过文本定位。

总结

css 选择器是一种常用的定位网页的技术,在前端和自动化领域应用广泛。

  • 可以在 f12,console 中编写 css 选择器表达式。

  • 通用选择器有 *,element,.class,#id,[prop=value] 等。

  • 属性选择器有 =, *=,$=,^=,~=,|= 等等。

  • 组合选择器有 >,~,+ 等等。

  • 还有伪类定位。

  • 本文来源山东标梵(https://www.biaofun.com/)


转载:https://blog.csdn.net/weixin_42317619/article/details/114373125
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场