1. var $shadow = new Object();
  2. /**
  3. 获取元素的xpath
  4. 特性:
  5. - 转换xpath为csspath进行jQuery元素获取
  6. - 仅生成自然表述路径(不支持非、或)
  7. @param dom {String/Dom} 目标元素
  8. @returns {String} dom的xpath路径
  9. */
  10. $shadow.domXpath = function(dom) {
  11. dom = $(dom).get(0);
  12. var path = "";
  13. for (; dom && dom.nodeType == 1; dom = dom.parentNode) {
  14. var index = 1;
  15. for (var sib = dom.previousSibling; sib; sib = sib.previousSibling) {
  16. if (sib.nodeType == 1 && sib.tagName == dom.tagName)
  17. index++;
  18. }
  19. var xname =  dom.tagName.toLowerCase();
  20. if (dom.id) {
  21. xname += "[@id=\"" + dom.id + "\"]";
  22. } else {
  23. if (index > 0)
  24. xname += "[" + index + "]";
  25. }
  26. path = "/" + xname + path;
  27. }
  28. path = path.replace("html[1]/body[1]/","html/body/");
  29. return path;
  30. };
  1. /**
  2. 根据xpath获取元素
  3. 特性:
  4. - 转换xpath为csspath进行jQuery元素获取
  5. - 仅支持自然表述(不支持非、或元素选取)
  6. @param xpath {String} 目标元素xpath
  7. @returns {jQuery Object} 元素/元素集合
  8. */
  9. $shadow.xpathDom = function(xpath){
  10. // 开始转换 xpath 为 css path
  11. // 转换 // 为 " "
  12. xpath = xpath.replace(/\/\//g, " ");
  13. // 转换 / 为 >
  14. xpath = xpath.replace(/\//g, ">");
  15. // 转换 [elem] 为 :eq(elem) : 规则 -1
  16. xpath = xpath.replace(/\[([^@].*?)\]/ig, function(matchStr,xPathIndex){
  17. var cssPathIndex = parseInt(xPathIndex)-1;
  18. return ":eq(" + cssPathIndex + ")";
  19. });
  20. // 1.2 版本后需要删除@
  21. xpath = xpath.replace(/\@/g, "");
  22. // 去掉第一个 >
  23. xpath = xpath.substr(1);
  24. alert(xpath);
  25. // 返回jQuery元素
  26. return $(xpath);
  27. };
 

获取元素的xpath, 转换xpath为csspath进行jQuery元素获取的更多相关文章

  1. javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

    主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...

  2. 网页元素定位神器之Xpath详解

    摘要: 经常在工作中会使用到XPath的相关知识,但每次总会在一些关键的地方不记得或不太清楚,所以免不了每次总要查一些零碎的知识,感觉即很烦又浪费时间,所以对XPath归纳及总结一下. ...     ...

  3. 使用Xpath定位元素(和元素定位相关的Xpath语法)

    本文主要讲述Xpath语法中,和元素定位相关的语法 第一种方法:通过绝对路径做定位(相信大家不会使用这种方式) By.xpath("html/body/div/form/input" ...

  4. 页面元素定位及操作--xpath

    简介: 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. /xxx 页面输出 / ...

  5. css选择器用法,使用css定位元素,css和xpath元素定位的区别

    css定位元素 1.什么是css? CSS(Cascading Style Sheets)层叠样式表,是一种语言,用来描述html或者xml的显示样式.在css语言中有css选择器,在selenium ...

  6. 关于xpath语句完全正确,但是页面报错: no such element: Unable to locate element: {"method":"xpath","selector":"xpath"}

    之前使用selenium-webdriver来写UI的自动化脚本,发现有一个元素一直无法定位,查看其源码,如下 利用xpathChecker验证了xpath语句的是正确的,但是控制台一直报错: no ...

  7. XPath轴(XPath Axes)总结

    XPath轴(XPath Axes)可定义某个相对于当前节点的节点集: 1.child 选取当前节点的所有子元素 2.parent 选取当前节点的父节点 3.descendant 选取当前节点的所有后 ...

  8. 了解XPath与XPath轴

    XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. 节点(Node) 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理 ...

  9. 在 shell 脚本获取 ip、数字转换等网络操作

    在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...

随机推荐

  1. IOS开发--仿制网易新闻

    学习来源:袁峥老师的<快速集成App中顶部标题滚动条> 此次博文写的是按需求分析写代码,思路条理性杠杠的,可以提高的编码实现速度哦. 效果:   根据这个网易新闻的界面,需求分析:     ...

  2. 设置自己的RadASM颜色

    在RadASM.ini中的color节添加 4=wls_asm_color,16777215,0,8388608,16777215,15777984,12644544,12632304,1644176 ...

  3. apache CXF wsdl2java工具的使用

    cxf的wsdl2java命令和JDK的wsimport命令的区别和使用 JDK提供了一个wsimport.exe的命令,主要是用于将WebService生成客户端代码,然后好调用WebService ...

  4. 设置html的div中背景图片长宽

    使用以下可行 background-size:1040px 482px;

  5. 使用Ajax与服务器端通信

    Ajax这个词,不代表任何东西,它仅仅是称呼一系列促进客户端与服务器通信的技术时所用的一个术语.服务器通信时Ajax技术的核心内容,其目标就是从客户端向服务器发送信息,并接受后者的回传,以求在此过程中 ...

  6. java分别通过httpclient和HttpURLConnection获取图片验证码内容

    前面的文章,介绍了如何通过selenium+Tesseract-OCR来识别图片验证码,如果用接口来访问的话,再用selenium就闲的笨重,下面就介绍一下分别通过httpclient和HttpURL ...

  7. 用Python和摄像头制作简单的延时摄影

    “延时摄影(英语:Time-lapse photography)是以一种较低的帧率拍 下图像或者视频,然后用正常或者较快的速率播放画面的摄影技术.在一段延时摄影视频中,物体或者景物缓慢变化的过程被压缩 ...

  8. 通过JDBC进行简单的增删改查(二)

    本章笔记更易理解和学习,也是我第一次初学的笔记. package javastudy; import java.sql.Connection; import java.sql.DriverManage ...

  9. WPF窗口阴影和夜间模式的实现

    窗口阴影 实现 因项目需要给用户一定提示,设计师建议在鼠标进入时显示窗口阴影,离开时取消窗口阴影. 很自然,都会想到直接在窗口的内容或者自定义窗口的最外层元素上加效果.示例如下: <Grid&g ...

  10. java 16 -4 LinkedList的特有功能

    了解 LinkedList的特有功能: A:添加功能 public void addFirst(Object e) public void addLast(Object e) B:获取功能 publi ...