欢迎来到魔幻小生的博客

selenium 元素定位

selenium中通过 find_element() 方法来完成定位。

webdriver对象的find_element(by="属性名", value="属性值")方法

image

XPath

XPath 即为 XML 路径语言(XML Path Language),用于解析 HTML 与 XML。从头到尾遍历,速度比 CSS Selector 慢。

image

image

右键要定位的元素,选择“检查”;

image

选择复制 XPath 即可。

image

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By


class TestSelector:
    @pytest.fixture
    def driver(self):
        driver = webdriver.Chrome()
        yield driver
        driver.quit()

    def test_selector(self, driver):
        driver.get("https://www.baidu.com/")
        driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys("测试学习")
        driver.find_element(By.XPATH, '//*[@id="su"]').click()

CSS Selector

CSS Selector 是一种用于选择 HTML 元素的语法,最初设计用于前端样式定义(CSS 文件),但在自动化测试中也被广泛应用于元素定位。通过 CSS Selector,可以根据标签名、类名、ID、属性值等条件定位目标元素,甚至支持嵌套结构和伪类选择器。

image

image

image

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By


class TestSelector:
    @pytest.fixture
    def driver(self):
        driver = webdriver.Chrome()
        yield driver
        driver.quit()

    def test_selector(self, driver):
        driver.get("https://www.baidu.com/")
        driver.find_element(By.CSS_SELECTOR, '#kw').send_keys("测试学习")
        driver.find_element(By.CSS_SELECTOR, '#su').click()

ID / NAME

id name 在页面通常是唯一的,可以直接定位。

可能有些元素的id是动态生成的,有些html页面name不唯一时,无法使用。

image

# 根据 id 定位
element = self.driver.find_element(By.ID, 'kw')
# 根据 name 定位
element = self.driver.find_element(By.NAME, 'wd')

通过链接的文本内容定位(适用于 <a> 标签)。如果页面文本内容不唯一时无法使用。

如:定位 “更多” 按钮

image

element = self.driver.find_element(By.LINK_TEXT, '更多')
posted @ 2025-03-19 21:34  魔幻小生  阅读(19)  评论(0)    收藏  举报