获取元素的xpath, 转换xpath为csspath进行jQuery元素获取
- var $shadow = new Object();
- /**
- 获取元素的xpath
- 特性:
- - 转换xpath为csspath进行jQuery元素获取
- - 仅生成自然表述路径(不支持非、或)
- @param dom {String/Dom} 目标元素
- @returns {String} dom的xpath路径
- */
- $shadow.domXpath = function(dom) {
- dom = $(dom).get(0);
- var path = "";
- for (; dom && dom.nodeType == 1; dom = dom.parentNode) {
- var index = 1;
- for (var sib = dom.previousSibling; sib; sib = sib.previousSibling) {
- if (sib.nodeType == 1 && sib.tagName == dom.tagName)
- index++;
- }
- var xname = dom.tagName.toLowerCase();
- if (dom.id) {
- xname += "[@id=\"" + dom.id + "\"]";
- } else {
- if (index > 0)
- xname += "[" + index + "]";
- }
- path = "/" + xname + path;
- }
- path = path.replace("html[1]/body[1]/","html/body/");
- return path;
- };
- /**
- 根据xpath获取元素
- 特性:
- - 转换xpath为csspath进行jQuery元素获取
- - 仅支持自然表述(不支持非、或元素选取)
- @param xpath {String} 目标元素xpath
- @returns {jQuery Object} 元素/元素集合
- */
- $shadow.xpathDom = function(xpath){
- // 开始转换 xpath 为 css path
- // 转换 // 为 " "
- xpath = xpath.replace(/\/\//g, " ");
- // 转换 / 为 >
- xpath = xpath.replace(/\//g, ">");
- // 转换 [elem] 为 :eq(elem) : 规则 -1
- xpath = xpath.replace(/\[([^@].*?)\]/ig, function(matchStr,xPathIndex){
- var cssPathIndex = parseInt(xPathIndex)-1;
- return ":eq(" + cssPathIndex + ")";
- });
- // 1.2 版本后需要删除@
- xpath = xpath.replace(/\@/g, "");
- // 去掉第一个 >
- xpath = xpath.substr(1);
- alert(xpath);
- // 返回jQuery元素
- return $(xpath);
- };
获取元素的xpath, 转换xpath为csspath进行jQuery元素获取的更多相关文章
- 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.数组插入.删除 ...
- 网页元素定位神器之Xpath详解
摘要: 经常在工作中会使用到XPath的相关知识,但每次总会在一些关键的地方不记得或不太清楚,所以免不了每次总要查一些零碎的知识,感觉即很烦又浪费时间,所以对XPath归纳及总结一下. ... ...
- 使用Xpath定位元素(和元素定位相关的Xpath语法)
本文主要讲述Xpath语法中,和元素定位相关的语法 第一种方法:通过绝对路径做定位(相信大家不会使用这种方式) By.xpath("html/body/div/form/input" ...
- 页面元素定位及操作--xpath
简介: 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. /xxx 页面输出 / ...
- css选择器用法,使用css定位元素,css和xpath元素定位的区别
css定位元素 1.什么是css? CSS(Cascading Style Sheets)层叠样式表,是一种语言,用来描述html或者xml的显示样式.在css语言中有css选择器,在selenium ...
- 关于xpath语句完全正确,但是页面报错: no such element: Unable to locate element: {"method":"xpath","selector":"xpath"}
之前使用selenium-webdriver来写UI的自动化脚本,发现有一个元素一直无法定位,查看其源码,如下 利用xpathChecker验证了xpath语句的是正确的,但是控制台一直报错: no ...
- XPath轴(XPath Axes)总结
XPath轴(XPath Axes)可定义某个相对于当前节点的节点集: 1.child 选取当前节点的所有子元素 2.parent 选取当前节点的父节点 3.descendant 选取当前节点的所有后 ...
- 了解XPath与XPath轴
XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. 节点(Node) 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理 ...
- 在 shell 脚本获取 ip、数字转换等网络操作
在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...
随机推荐
- Objective-C之代理设计模式小实例
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- vs2012远程调试功能的改进
不知道大家有没有遇到过这种情况,刚开发完的程序,明明在本机能够好好的运行,可是部署到服务器过分发给用户时,总是出现莫名其妙的错误. 一时半会又看不出问题来,怎么办呢?难道只能在服务器或是客户电脑上装一 ...
- Monyer's Game 11~15关过关方法
到目前为止,玩这个小游戏并过关的人数已经达到了81人,首先Monyer要感谢各位的捧场与支持.继续上次的<Monyer's Game 6~10关过关方法>,我们来看剩下几关的过关方法. 但 ...
- spring生命周期
Github地址 最近在整合mybatis-spring. 公司里面已经有一个叫做kylin-datasource的开发包,以前能够提供master和slave2个数据源,最近更新了2.0版本,支持自 ...
- !!!jQuery中事件绑定 推荐使用.delegate()或者live()
jQuery中的.bind()..live()和.delegate()之间区别分析 参考:http://www.jb51.net/article/27309.htm DOM树 首先,可视化一个HM ...
- Autocomplete:属性介绍、firefox中文支持问题
如有问题,请前往 http://www.cnblogs.com/dreamowneryong/p/4953911.html 原文评论交流 一,属性介绍 * minChars (Number) 在触发a ...
- Sqlserver创建连接MySql的链接服务器
第一步:在MySql服务器上安装与系统对应的 MySql-Connector-ODBC 官方下载地址 安装过程中可能会报 缺失 msvcr100.dll 的错误,这需要你根据系统到网上下载对应的这个 ...
- jdbc至sql server的两种常见方法
Statement和prepareStatement sql server中已建立BookPhone数据库,包含bookPhone表,eclipse中有BookPhone类,三个string类型的值 ...
- 05_最长公共子序列问题(LCS)
问题来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题7: 问题描述:给两个子序列A和B,求长度最大的公共子序列.比如1,5,2,6,8,和2,3,5,6,9,8,4的最长公共子序 ...
- Windows Live Writer离线编写博客
WLW最新版本为2012,官网下载 Windows Live Writer配置步骤 使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结 L ...