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. android 使用HttpURLConnection方式提交get/post请求

    源码链接 package com.zhangbz.submitdata.Utils; import java.io.ByteArrayOutputStream; import java.io.IOEx ...

  2. OC语言-06-OC语言-block与protocol

    一.block 1> 基本使用 相当于用来存放代码的代码块 效率高 若没有形参可以省略小括号 2> block与函数的相同点 可以保存代码 可以有返回值 可以有形参 调用方式一样 3> ...

  3. Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全

    Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全 1. #====提升抽象层次1 2. #----使用通用单词1 3. #===使用术语..1 4.  ...

  4. Mysql中的触发器

    什么是触发器 简单的说,就是一张表发生了某件事(插入.删除.更新操作),然后自动触发了预先编写好的若干条SQL语句的执行: 特点及作用 特点:触发事件的操作和触发器里的SQL语句是一个事务操作,具有原 ...

  5. Oracle查看所有用户

    1.查看所有用户:select * from dba_users;   select * from all_users;   select * from user_users; 2.查看用户或角色系统 ...

  6. 如何延长windows评估版的方法

    在软件的开发测试,通常使用的是windows评估版本.但是有时候它的使用期限不满足你的需求.所以你可以用一下方法来延长评估版的时间. 延長使用期限 跟 Windows Server 2008 延長使用 ...

  7. 安装和配置JDK,并给出安装、配置JDK的步骤。

    1.从orcal网站下载安装包. 2.安装目录不要有汉字或空格 3.配置环境变量,增加·JAVA_HOME=jdk的全路径,修改path+%JAVA_HOME%\bin;%JAVA_HOME%\jre ...

  8. 用自然语言的角度理解JavaScript中的this关键字

    转自:http://blog.leapoahead.com/2015/08/31/understanding-js-this-keyword/ 在编写JavaScript应用的时候,我们经常会使用th ...

  9. java微信接口之五—消息分组群发

    一.微信消息分组群发接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_t ...

  10. 关于mac环境下删除cocos2d-x环境变量配置的方法

    yangchaodeMacBook-Air:downloads yangchao$ vim ~/.bash_profile