Selenium学习笔记21_CSS Selector

本文总结了CSS选择器的语法,包括通用选择器、类型选择器、属性选择器及结构性伪类选择器等,详细解释了每种选择器的含义与应用场景。

翻译自: 英文原文链接

The following table summarizes the Selector syntax:

模式含义描述CSS Level
*any elementuniversal selector2
Ean element of type EType selector1
E[foo]an E element with a “foo” attributeAttribute selector2
E[foo=”bar”]an E element whose “foo” attribute value is equal to “bar”Attribute selector2
E[foo~=”bar”an E element whose “foo” attribute value is a list of whitespace-separated values, one of which is equal to “bar”Attribute selector2
E[foo^=”bar”]an E element whose “foo” attribute starts with “bar”Attribute selector2
E[foo$=”bar”]an E element whose “foo” attribute ends with “bar”Attribute selector3
E[foo*=”bar”]an E element whose “foo” attribute value contains the substring “bar”Attribute selector3
E[foo=”en”]匹配所有att属性具有多个连字号分隔(hyphen-separated)的值、其中一个值以“val”开头的E元素,主要用于lang属性,比如“en”、“en-us”、“en-gb”等等Attribute selector
E:rootan E element, root of the documentStructural pseudo-classes3
E:nth-child(n)an E element, the n-th child of its parentStructural pseudo-classes3
E:nth-last-child(n)an E element, the n-th child of its parent, counting from the last oneStructural pseudo-classes3
在 Python Selenium 中使用 CSS 选择器进行元素定位是一种高效且灵活的方式。CSS 选择器通过 `By.CSS_SELECTOR` 来调用,可以根据元素的 `id`、`class`、属性等进行精确匹配。 ### 使用方法 要使用 CSS 选择器定位网页元素,可以通过以下方式: - **通过 id 定位**:在 CSS 选择器中,`#` 表示通过 `id` 定位元素。例如,`#username` 将匹配具有 `id="username"` 的元素。 ```python from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://www.example.com") element = driver.find_element(By.CSS_SELECTOR, "#username") ``` - **通过 class 定位**:在 CSS 选择器中,`.` 表示通过 `class` 定位元素。例如,`.s_ipt` 将匹配具有 `class="s_ipt"` 的元素 [^3]。 ```python element = driver.find_element(By.CSS_SELECTOR, ".s_ipt") ``` - **通过标签名和属性组合定位**:可以结合标签名和其他属性进行更精确的匹配。例如,`input[name='password']` 将匹配 `<input>` 标签中 `name` 属性为 `'password'` 的元素。 ```python element = driver.find_element(By.CSS_SELECTOR, "input[name='password']") ``` - **通过部分属性值匹配**: - `^=` 表示以某个值开头,例如 `input[id^='user']` 匹配 `id` 以 `'user'` 开头的 `<input>` 元素。 - `$=` 表示以某个值结尾,例如 `input[id$='name']` 匹配 `id` 以 `'name'` 结尾的 `<input>` 元素。 - `*=` 表示包含某个值,例如 `input[id*='ser']` 匹配 `id` 中包含 `'ser'` 的 `<input>` 元素。 ```python element = driver.find_element(By.CSS_SELECTOR, "input[id^='user']") element = driver.find_element(By.CSS_SELECTOR, "input[id$='name']") element = driver.find_element(By.CSS_SELECTOR, "input[id*='ser']") ``` - **子元素选择器**:可以使用 `>` 符号来定位直接子元素。例如,`div > input` 表示查找 `<div>` 下的第一层 `<input>` 子元素。 ```python element = driver.find_element(By.CSS_SELECTOR, "div > input") ``` - **多个条件组合**:可以使用 `.` 和 `[]` 等组合多个条件进行定位。例如,`input.s_ipt[type='text']` 将匹配同时具有 `class="s_ipt"` 和 `type="text"` 的 `<input>` 元素。 ```python element = driver.find_element(By.CSS_SELECTOR, "input.s_ipt[type='text']") ``` ### 优势与适用场景 CSS 选择器的优势在于其灵活性和高性能,特别适用于结构清晰的 HTML 页面。它比 XPath 更加简洁,并且通常执行速度更快。此外,CSS 选择器对于前端开发人员来说更加熟悉,因此在团队协作中更容易理解和维护。 CSS 选择器广泛应用于自动化测试中,尤其是在需要根据复杂属性或层级关系定位元素时非常有用。例如,在处理动态生成的内容或复杂的表单交互时,CSS 选择器提供了强大的支持。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值