获取html元素的XPath路径

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <script src="/jquery/jquery-1.11.1.min.js">
 5 </script>
 6 <script>
 7
 8  function readXPath(element) {
 9     if (element.id! == ""){//判断id属性,如果这个元素有id,则显 示//*[@id="xPath"]  形式内容
10         return ‘//*[@id=\"‘+element.id+‘\"]‘;
11     }
12
13     if (element.getAttribute("class")! == null){ //判断class属性,如果这个元素有class,则显 示//*[@class="xPath"]  形式内容
14         return ‘//*[@class=\"‘+element.getAttribute("class")+‘\"]‘;
15     }
16     //因为Xpath属性不止id和class,所以还可以更具class形式添加属性
17
18     //这里需要需要主要字符串转译问题
19
20
21     if (element == document.body){//递归到body处,结束递归
22         return ‘/html/‘+element.tagName.toLowerCase();
23     }
24
26     var ix= 0,//在nodelist中的位置,且每次点击初始化
27           siblings= element.parentNode.childNodes;//同级的子元素
28
29     for (var i= 0,l=siblings.length; i<l; i++) {
30         var sibling = siblings[i];
31         if (sibling == element){//如果这个元素是siblings数组中的元素,则执行递归操作
32             return arguments.callee(element.parentNode)+‘/‘+element.tagName.toLowerCase()+((ix+1)==1?‘‘:‘[‘+(ix+1)+‘]‘);//ix+1是因为xpath是从1开始计数的,element.tagName+((ix+1)==1?‘‘:‘[‘+(ix+1)+‘]‘)三元运算符,如果是第一个则不显示,从2开始显示
33         }else if(sibling.nodeType == 1 && sibling.tagName == element.tagName){//如果不符合,判断是否是element元素,并且是否是相同元素,如果是相同的就开始累加
34             ix++;
35         }
36     }
37 };
38
39 $(document).ready(function () {
40     var xpath = ‘‘, o;
41     $(‘*‘).click(function (e) {
42         e.stopPropagation();//停止冒泡
43         o = this;
44         alert(readXPath(o));
45     });
46 });
47
48 </script>
49 </head>
50 <body>
51 <p>如果您点击我,我会消失。</p>
52 <p>点击我,我会消失。</p>
53 <p>也要点击我哦。</p>
54 </body>
55 </html>
时间: 2024-08-29 19:44:55

获取html元素的XPath路径的相关文章

(三)dom4j+Xpath的简单路径表达式获取节点元素内容和属性值

1.导包 2.创建sys-config.xml <?xml version="1.0" encoding="UTF-8"?> <config> <database-info> <driver-name>com.mysql.jdbc.Driver</driver-name> <url>jdbc:mysql://localhost:3306/sys?serverTimezone=GMT%2B8<

元素定位-XPATH定位方法总结

1.Xpath定位方法探讨 xpath是比较常用的一种定位元素的方式,因为它很方便,缺点是,消耗系统性能.如果Xpath使用的比较好,几乎可以定位到任何页面元素,而且受页面变化影响较小. 1.1.什么是XPATH: XPath (XML Path Language) 是一门在 HTML文档中查找信息的语言,可用来在 HTML文档中对元素和属性进行遍历. 详细使用方法可见 W3School官方文档:http://www.w3school.com.cn/xpath/index.asp 1.2.XPA

Python中Scrapy框架元素选择器XPath的简单实例

原文标题:<Python网络爬虫-Scrapy的选择器Xpath> 对原文有所修改和演绎 优势 XPath相较于CSS选择器,可以更方便的选取 没有id class name属性的标签 属性或文本特征不显著的标签 嵌套层次极其复杂的标签 XPath路径 定位方式 / 绝对路径 表示从根节点开始选取 // 相对路径 表示从任意节点开始 基本的节点定位 #查找html下的body下的form下的所有input节点 /html/body/form/input #查找所有input节点 //input

IOS中获取各个文件的目录路径的方法和NSFileManager类

转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory()), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 1.Documents 目录:您应该将所有

Js之Dom学习-三种获取页面元素的方式、事件、innerText和innerHTML的异同

一.三种获取页面元素的方式: getElementById:通过id来获取 <body> <input type="text" value="请输入一个值:" id="txt"/> <input type="button" value="按钮" id="btn"/> <script> var txt=document.getElementB

如何使用FireBug插件查询元素的xPath属性

1.在firefox内如下安装组件:FirePath.Firebug 2.安装后重启 Firefox. 打开准备分析的网页,这里以www.wenxin.xyz为例: 准备获取搜索框的Xpath地址. 3.在搜索框内点击右键:选择“使用Firebug检查元素”.或者直接按下快捷键F12键也可以达到相同的效果. 4.打开后点击FirePath标签: 5.如果在这个界面你想查请看其他元素的Xpath地址,可以直接点击箭头按钮,选择相应的元素,可以直接看到该元素的Xpath地址.

Robotframework中的元素locator[xpath和css]

1:通过ID2:通过Name3:通过xpath   3.1 通过xpath的绝对路径,从最外层开始找       例如/html/body/div[1]/div[4]/div[2]/div/form/span[1]/input   3.2 通过xpath的相对路径       3.2.1 找元素本身       xpath同样可以利用元素自身的属性, 例如 xpath=//*[@id='kw1']       //表示某个层级下,*表示某个标签名,@id=kw1表示这个元素有个id等于kw1  

xpath路径的写法

关于xpath路径的写法 1.选取节点 表达式 描述 nodename 选取此节点的所有子节点. / 从根节点选取. // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置. . 选取当前节点. .. 选取当前节点的父节点. @ 选取属性. 路径表达式 结果 bookstore 选取 bookstore 元素的所有子节点. /bookstore 选取根元素 bookstore.注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! bookstore/book 选取属

使用Selenium含蓄等待获取页面元素(附带实际业务需求情景)

Hello,大家好,又到了小猿分享技术的时间了.这回带来的是使用Selenium去网站上获取部分信息并且执行部分操作以及"含蓄"等待元素加载完成以及截取图片和网页刷新机制的技术点. 解释说明:Selenium用于自动化测试,web自动化测试工具集,即使用该模块去模拟手动去网页上点击获取信息,是一个很好的自动化测试模块. 关于selenium模块,其实它的主要目的是进行web自动化测试,获取信息是次要的,主要是为了测试web的性能,这里也只是针对关于在web页面上进行操作. 该模块适用范