获取元素的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 ...
随机推荐
- Android之 左右滑动菜单
近来学习了极客学院有关于界面左右滑动的视频,就在这里写个博客,巩固一下知识点,以免忘了. 这里主要介绍界面是如何左右滑动的: 1.首先我们应该设置好将要滑动的三个界面,即leftMenu.middle ...
- Profile 分析 Erlang 虚拟机源码时要注意的一个问题
最近用 Intel Vtune 剖析 Erlang 虚拟机的运行,想看看那些函数和语句耗时最多,遇到一个小问题,那就是 Vtune 给出的源码和汇编码对应有问题.这个问题在 profile 或 deb ...
- Group By Count不能显示0的问题
问题: 如对表: /*==================================================== id |score |grade ------------------- ...
- DLL分类
使用def文件简化dll导出 VS查看DLL接口
- 用memoization优化递归算法[JS/PHP实现]
递归函数,通过把一个大而复杂问题简化为许多但规模较小的问题,以同一个相似模式来计算,降低了解题的难度:通过调用自身函数,极大地减少了函数代码量的优点而为开发者喜爱.但因其不断调用自身函数开辟新栈,且大 ...
- Docker CentOS 7.2镜像systemd问题解决办法
docker的CentOS 7.2最新版官方镜像使用systemctl管理程序时会遇到如下错误: Failed to get D-Bus connection: Operation not permi ...
- Python pass语句作用与用法
Python中的pass语句作用是什么?表示它不做任何事情,一般用做占位语句.pass语句具体作用及使用方法,我们往下看. pass语句在函数中的作用 当你在编写一个程序时,执行语句部分思路还没有完成 ...
- LinuxI2C核心、总线驱动与设备驱动
I2C体系结构分为三个部分:I2C核心.总线驱动.设备驱动 I2C核心: I2C核心提供了一组不依赖硬件的接口函数,I2C总线驱动和设备驱动之间依赖于I2C核心作为纽带 (1)增加/删除i2c_ada ...
- java lambda小纪
一个通俗的说法是 :C#委托和Java中实现了 函数式编程的方法,它是函数式编程中的概念,为了更快的处理集合,在Java,c#等静态类型语言中想要引用一个函数的一种方式,(实现了通过封装匿名方法来达到 ...
- java使用HttpURLConnection和HttpClient分别模拟get和post请求以及操作cookies
1.使用HttpURLConnection public static String getJsonByURL(String base_url) { String url = base_url; St ...