“淘宝第一个程序员”蔡景现(花名多隆)已从阿里巴巴离职,结束25年任职生涯。作为淘宝初创核心工程师,他构建了淘宝交易系统,以技术实力闻名,曾以26亿身家登上胡润富豪榜,其阿里内外状态已显示为“退隐江湖”。
XPath的
contains()
contains()
contains()
contains(string, substring)
举几个实际例子:
查找文本中包含特定内容的元素: 假设你想找到所有包含“最新消息”这几个字的
div
//div[contains(text(), '最新消息')]
text()
contains()
查找属性值中包含特定内容的元素: 如果有一个链接,它的
href
//a[contains(@href, 'product')]
@href
href
处理动态类名: 很多前端框架会生成动态的CSS类名,比如
btn-primary-dsf23k
btn-primary
//button[contains(@class, 'btn-primary')]
@class='btn-primary-dsf23k'
结合其他条件使用: 你也可以将
contains()
//div[contains(@id, 'item') and contains(text(), '详情')]
id
div
contains()
starts-with()
ends-with()
说实话,XPath这东西,用好了就是利器,但刚上手时,
contains()
starts-with()
ends-with()
starts-with(string, substring)
user_1
user_2
admin_1
starts-with(@id, 'user')
super_user_1
ends-with(string, substring)
.png
//img[ends-with(@src, '.png')]
substring()
string-length()
contains(string, substring)
contains()
active-item
item-active
main-item-active-status
item
contains(@class, 'item')
什么时候用哪个?
starts-with()
ends-with()
contains()
contains()
很多时候,我们抓取网页或者自动化测试时,会遇到一些让人头疼的动态元素。它们的ID、类名或者文本内容,可能每次加载都变一部分。这时候,
contains()
动态类名处理的“万金油”: 设想一下,一个按钮,今天它的类名是
btn-primary-randomhash123
btn-primary-anotherhash456
btn-primary
//button[contains(@class, 'btn-primary')]
<div class="item active selected">
//div[contains(@class, 'active')]
处理部分变化的文本内容: 网页上经常有这种文本:“您的订单号是:ABC123456789”,或者“当前库存:150件”。其中“ABC123456789”和“150”是动态变化的。
//p[contains(text(), '您的订单号是:')]
//span[contains(text(), '当前库存:') and contains(text(), '件')]
contains
应对大小写不敏感的需求(XPath 1.0 局限):
contains()
contains(text(), 'hello')
translate()
contains()
//div[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'hello')]
lower-case()
//div[contains(lower-case(text()), 'hello')]
contains()
contains()
大小写敏感性陷阱: 这是最常见的“坑”之一。很多人以为
contains()
contains(@class, 'active')
Active
translate()
lower-case()
过度匹配的风险:
contains()
class
item-list
//div[contains(@class, 'item')]
item-detail
sub-item
contains()
//div[@id='main-content']//li[contains(@class, 'product-item')]
//li[contains(@class, 'product-item')]
id
main-content
div
性能考量(虽然通常不是大问题): 对于现代浏览器和XPath引擎来说,
contains()
contains()
@id='someId'
starts-with()
contains()
//*[contains(text(), '某个词')]
总的来说,
contains()
以上就是XPath的contains()方法怎么用?有哪些应用场景?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号