自动化测试/爬虫定位真难,那是你还没掌握XPath定位

简介: 自动化测试/爬虫定位真难,那是你还没掌握XPath定位

XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。

XPath定位在爬虫和自动化测试中都比较常用,通过使用路径表达式来选取 XML 文档中的节点或者节点集,熟练掌握XPath可以极大提高提取数据的效率。

因为XPath解析数据是基于元素(Element)的树形结构,所以学习XPath前,先了解一下html的结构及常用标签。

img

关于HTML学习可以参考W3School文档:https://www.w3school.com.cn/html/index.asp

常用标签

标题:<h1>、<h2>、<h3>、<h4>、<h5>、<h6>、<title>


段落:<p>


链接:<a>


图像:<img>


样式:<style>


列表:无序列表<ul>、有序列表<ol>、列表项<li>


块:<div>、<span>


脚本:<script>


注释:<!--注释-->

XPath表达式学习

常用表达式

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点开始选取,绝对定位
// 从符合条件的元素的开始,而不考虑它们的位置。相对定位
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

常用案例

img!

谓语表达式

谓语用来查找某个特定的节点或者包含某个指定值的节点,被嵌在方括号中。

img

通配符

通配符 描述
* 匹配任何元素节点。
@ 匹配任何属性节点。

XPath常用的定位方式

1.元素属性,快速定位,唯一属性:

//*[@id="images"]

2.层级与属性结合,解决没有属性问题:

//div[@id="images"]/a[1]

3.属性与逻辑结合,解决多个属性重名问题:

//*[@id="su" and @class="bg s_btn" ]

注意,表达式里的下标是从1开始的。

绝对定位以/开头,依赖页面的元素的顺序和位置,相对定位以//开头,不依赖页面元素顺序和位置,根据条件进行匹配,优先使用相对定位。

学习XPath本质就是掌握各种表达式的技巧,除了上述说到方法外,还有一些特别的定位方式:

4.查找id属性的值包含"kw"的元素:

//*[contains(@id,'kw')]

5.查找⽂本⾥包含"新闻"的元素

//*[contains(text(),'新闻')]

6.查找class属性中开始位置包含's_form_wrapper'关键字的元素:

//*[starts-with(@class,'s_form_wrapper')]

7.使⽤多个相对路径去定位⼀个元素⽤//分开:

//div[@class=‘formgroup’]//input[@id=‘user-message’]

8.轴定位:

轴定位,使用::表示

img

查找id="head"元素后⾯标签名为input的第一个元素

//*[@id="head"]//following::input[1]

img

在浏览器中查找和验证XPath

1.使用Chrome浏览器的开发者工具,可以快速获取XPath表达式:

点击选择光标,选择页面上的元素位置,在控制台右键选择Copy XPath,表达式就复制到粘贴板中了。

img

获取到的XPath路径://*[@id="su"]

获取full XPath:/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input

2.验证表达式:

按键“Ctrl+F”,在控制台中输入需要检查的XPath路径,对应的元素会有的颜色标识。

img

目录
相关文章
|
2月前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href=&#39;example.com&#39;]` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
|
7月前
|
监控 测试技术 UED
软件测试中的性能瓶颈定位与优化策略
在软件开发的生命周期中,性能测试是确保产品质量的关键步骤之一。本文深入探讨了性能测试的重要性,并提出了一套系统的性能瓶颈定位与优化策略。通过分析现代软件系统中常见的性能问题,结合最新的研究成果和行业最佳实践,文章详细介绍了如何运用科学严谨的方法来识别和解决性能瓶颈。此外,本文还强调了逻辑严密的问题分析框架和数据驱动的决策过程对于提升软件性能的重要性。
|
4月前
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
274 4
Android性能测试——发现和定位内存泄露和卡顿
|
3月前
|
数据采集 XML 数据格式
Python爬虫--xpath
Python爬虫--xpath
30 1
|
3月前
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
141 0
|
4月前
|
数据采集 测试技术 API
在BrowserStack上进行自动化爬虫测试的终极指南
随着互联网的发展,数据价值日益凸显,爬虫技术成为提取网页信息的关键工具。然而,不同环境下的测试与运行挑战重重,特别是在多浏览器、多平台上保证爬虫的稳定性和兼容性尤为困难。BrowserStack作为领先的跨浏览器测试平台,提供了强大的工具和服务。本文将详细介绍如何在BrowserStack上进行自动化爬虫测试,并结合代理IP技术提升爬虫的隐蔽性和成功率。通过具体步骤和案例分析,展示如何利用Selenium、自定义用户代理和Cookie设置来应对反爬虫机制。本指南旨在为开发者提供实用模板,帮助其在多变的测试环境中构建高效的爬虫系统。
195 1
|
4月前
|
缓存 监控 算法
软件测试中的性能瓶颈定位与优化策略
性能瓶颈,如同隐藏在系统深处的“拦路虎”,悄无声息地制约着软件的表现。本文将揭示如何通过一系列科学方法,识别并消除这些障碍,从而显著提升软件性能,确保用户享受到流畅无阻的数字体验。
|
5月前
|
数据采集 存储 JSON
自动化数据采集:Lua爬虫与JSON解析的深度整合
自动化数据采集:Lua爬虫与JSON解析的深度整合
|
7月前
|
XML 数据采集 前端开发
四:《智慧的网络爬虫》— 数据解析之xpath解析
本篇文章主要讲述了数据解析中的xpath解析,及相对路径的定位语法。最后以爬取豆瓣top250首页作为示例总结
128 5
四:《智慧的网络爬虫》—  数据解析之xpath解析
|
5月前
|
数据采集 SQL 前端开发
Java SpringBoot自动化网页爬虫项目
这是一个基于Java Spring Boot的自动化网页爬虫平台,采用图形化界面定义爬虫流程,无需编写代码。该平台高度灵活且可配置,支持Xpath、JsonPath、CSS选择器及正则表达式等多种提取方式,兼容JSON、XML和二进制格式,并支持通过代理服务器访问。它还具备自动管理Cookie、保存数据至数据库或文件、自定义函数和SQL脚本等功能,同时集成了任务监控和日志记录系统。此外,平台支持HTTP接口调用和动态网页抓取,可通过Selenium模拟真实浏览器行为。用户可通过直观的操作界面轻松完成复杂的数据抓取任务。