首页 / DrissionPage 入门教程 / 文本定位

DrissionPage 入门教程

文本定位

本教程共 42 篇 · 第 15 篇 · 更新于 2026-07-29 · 约 5 分钟阅读

DrissionPageDrissionPage 入门教程文本定位text定位元素查找

15. 文本定位

本节目标:掌握用文本内容定位元素的方法,包括精确匹配、模糊匹配和开头匹配,学完能快速找到页面上任意文本对应的元素。

为什么需要文本定位

前面几章你学了用 id、class 这些属性找元素。但实际工作中,很多元素没有 id,class 名又长又怪。

这时候文本定位就派上用场了。按钮上写”登录”,链接上写”更多”,直接用文本去找,直观又方便。

text: 开头定位

DrissionPage 支持用 text: 开头,直接按文本内容查找元素。

from DrissionPage import SessionPage

page = SessionPage()
page.get('https://www.baidu.com')

# 查找文本包含"新闻"的元素(模糊匹配)
ele = page.ele('text:新闻')
print(ele.text)  # 输出:新闻

这种写法会查找页面上文本包含”新闻”的第一个元素,属于模糊匹配。

精确匹配

精确匹配用 = 符号。只有文本完全一致才会命中。

# 精确匹配文本
ele = page.ele('text=新闻')
print(ele.text)  # 输出:新闻
Tip

text= 的区别:text:新闻 是模糊匹配(包含即可),text=新闻 是精确匹配(必须完全一致)。这和 @id 属性的规则一样,: 表示模糊,= 表示精确。

匹配开头

^ 符号可以匹配以某段文本开头的元素。

# 查找文本以"百度"开头的元素
ele = page.ele('text^百度')
print(ele.text)

匹配结尾

$ 符号可以匹配以某段文本结尾的元素。

# 查找文本以"地图"结尾的元素
ele = page.ele('text$地图')
print(ele.text)

配合 @ 语法使用

文本定位还能和 @ 语法组合,实现更精确的查找。

# 查找文本为"新闻"的 a 标签
ele = page.ele('@@tag()=a@@text()=新闻')
print(ele.text)

或者用简化写法:

# 查找 class 为"nav"且文本包含"更多"的元素
ele = page.ele('@@class=nav@text():更多')
print(ele.text)

实际小例子

假设页面上有几个按钮,你想点”提交”那个:

from DrissionPage import SessionPage

page = SessionPage()
page.get('https://example.com/form')

# 直接用文本定位并点击
page.ele('text:提交').click()

不需要关心它有没有 id,也不需要知道 class 叫什么。按钮上写什么,你就找什么。

文本定位是大小写敏感的。“Login”和”login”会被当作不同的文本。写的时候注意和页面上保持一致。

和其他定位方式对比

方式写法适用场景
id#kw元素有 id 时最方便
class.nav按样式类名查找
文本模糊text:新闻元素没属性但能看到文本
文本精确text=新闻需要精确匹配文本
xpathxpath://a[text()="新闻"]复杂场景兜底

文本定位的好处是直观。看一眼页面就知道要写什么。

但也有局限:文本变了就得跟着改,国际化场景下不太稳定。

小结

这一节你学了五种文本定位方式:

  • text:xxx — 模糊匹配(包含即可)
  • text=xxx — 精确匹配
  • text^xxx — 匹配开头
  • text$xxx — 匹配结尾
  • @text():xxx — 组合匹配时配合 @@@ 使用

实际用得最多的是模糊匹配和精确匹配两种。记住一个原则:能用 id 就用 id,id 没有再用文本。