css 选择器 element+element.html

本文详细介绍了CSS中element+element选择器的使用方法,通过实例解释了如何选取紧跟在特定元素后的兄弟元素,并展示了实际应用案例。
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css 选择器 element+element</title>
    <style>
        /*参考:https://www.w3school.com.cn/cssref/css_selectors.asp
        知识点:
            1.element+element 选择器用于选取第一个指定的元素之后(不是内部)紧跟的兄弟元素。
              div+p    选择紧接在 <div> 元素之后的所有 <p> 元素(经测试不是)。

              实例:
              <div class="weather-info">
                    <!-- <span>28℃~22℃</span>
                        <span>东南风3~4级</span>
                        <span>xxxx</span> -->
                </div>

                div.weather-info span + span {
                    // 此 css 选择器选择的元素是
                        <span>东南风3~4级</span>
                        <span>xxxx</span>
                }
        */
        div + p {
            background-color: yellow;
        }
    </style>
</head>
<body>
<h1>欢迎来到我到的主页</h1>
<div>
    <p>我是唐老鸭。</p>
    <p>我住在 Duckburg。</p>
</div>
<p>我最好的朋友是米老鼠。</p>
<p>我的样式不会改变。</p>
</body>
</html>


在 Selenium 中,CSS 选择器是一种强大且灵活的元素定位方式,适用于多种 HTML 结构和属性。通过不同的 CSS 选择器语法,可以精准地找到页面上的目标元素。 ### 基本选择器 1. **通过 ID 定位** 使用 `#` 符号表示 ID 属性。例如,`input#username` 表示查找类型为 `input` 且 ID 为 `username` 的元素。 ```python element = driver.find_element(By.CSS_SELECTOR, "input#username") ``` 2. **通过 class 定位** 使用 `.` 符号表示 class 属性。例如,`.submit-button` 表示查找 class 包含 `submit-button` 的元素。 ```python element = driver.find_element(By.CSS_SELECTOR, ".submit-button") ``` 如果一个元素有多个 class(如 `class="bg s_btn_wr"`),可以通过组合多个 class 进行更精确的匹配: ```python element = driver.find_element(By.CSS_SELECTOR, ".bg.s_btn_wr") ``` 3. **通过标签名定位** 直接使用 HTML 标签名进行定位,例如 `div` 或 `a`。 ```python element = driver.find_element(By.CSS_SELECTOR, "div") ``` ### 属性选择器 1. **通过特定属性值定位** 可以通过指定属性及其值来定位元素。例如,`a[href='/login']` 表示查找 `href` 属性为 `/login` 的链接。 ```python element = driver.find_element(By.CSS_SELECTOR, "a[href='/login']") ``` 2. **模糊匹配属性值** - `^=`:匹配以指定字符串开头的属性值。例如,`input[id^='user']` 表示查找 `id` 以 `user` 开头的输入框。 - `$=`:匹配以指定字符串结尾的属性值。 - `*=`:匹配包含指定字符串的属性值。 ### 组合选择器 1. **后代选择器** 通过空格连接多个选择器,表示查找嵌套层级中的元素。例如,`div.form-group input` 表示查找 `div` 类名为 `form-group` 下的所有 `input` 元素。 ```python element = driver.find_element(By.CSS_SELECTOR, "div.form-group input") ``` 2. **子代选择器** 使用 `>` 符号表示直接子元素。例如,`div.form-group > input` 表示查找 `div` 类名为 `form-group` 的直接子元素 `input`。 ```python element = driver.find_element(By.CSS_SELECTOR, "div.form-group > input") ``` ### 伪类选择器 1. **通过位置筛选元素** 使用 `:nth-child(n)` 或 `:nth-last-child(n)` 来选择特定位置的子元素。例如,`ul.items > li:nth-child(3)` 表示查找 `ul` 列表下的第 3 个列表项。 ```python element = driver.find_element(By.CSS_SELECTOR, "ul.items > li:nth-child(3)") ``` 2. **选择倒数第 n 个子元素** 使用 `:nth-last-child(n)` 来选择从后往前计数的第 n 个子元素。例如,`p:nth-last-child(2)` 表示查找每个 `p` 元素在其父元素中是倒数第二个子元素的情况。 ```python element = driver.find_element(By.CSS_SELECTOR, "p:nth-last-child(2)") ``` ### 调试与验证 - **浏览器开发者工具** 按下 F12 打开浏览器控制台,在 Console 面板中输入 `$$("css选择器")` 来查看匹配结果。 - **确保唯一性** 在实际使用中,应确保 CSS 选择器返回的元素是唯一的。如果存在多个匹配项,可以通过 `find_elements` 获取所有匹配的元素列表,并手动筛选出目标元素。 ### 示例代码总结 以下是一个综合示例,展示如何使用不同类型的 CSS 选择器进行元素定位: ```python from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 通过 ID 定位 element = driver.find_element(By.CSS_SELECTOR, "input#username") # 通过 class 定位 element = driver.find_element(By.CSS_SELECTOR, ".submit-button") # 通过属性定位 element = driver.find_element(By.CSS_SELECTOR, "a[href='/login']") # 组合选择器 element = driver.find_element(By.CSS_SELECTOR, "div.form-group > input") # 伪类定位第 3 个列表项 element = driver.find_element(By.CSS_SELECTOR, "ul.items > li:nth-child(3)") # 伪类定位倒数第 2 个 p 元素 element = driver.find_element(By.CSS_SELECTOR, "p:nth-last-child(2)") # 多个 class 定位 element = driver.find_element(By.CSS_SELECTOR, ".bg.s_btn_wr") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值