selenium 元素定位
selenium中通过 find_element() 方法来完成定位。
webdriver对象的find_element(by="属性名", value="属性值")方法

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


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

选择复制 XPath 即可。

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、属性值等条件定位目标元素,甚至支持嵌套结构和伪类选择器。



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不唯一时,无法使用。

# 根据 id 定位
element = self.driver.find_element(By.ID, 'kw')
# 根据 name 定位
element = self.driver.find_element(By.NAME, 'wd')
LINK_TEXT
通过链接的文本内容定位(适用于 <a> 标签)。如果页面文本内容不唯一时无法使用。
如:定位 “更多” 按钮

element = self.driver.find_element(By.LINK_TEXT, '更多')

浙公网安备 33010602011771号