`

JavaScript 定位XPath

阅读更多
由于使用table ,一个界面的元素的xpath 可能会不断的变化,因而一个界面元素的xpath可能会有多个,于是使用 数组储存可能的xpath,使用如下程序结构
以后页面变化,只需要填数组就好

var orderid_xp=['html/body/table[4]/tbody/tr/td/table/tbody/tr[3]/td',
                  'html/body/table[5]/tbody/tr/td/table/tbody/tr[3]/td'];
 
var orderid=getCompText(orderid_xp);


function getCompText(xpthArr){
  var result="";
  if(typeof xpthArr=='string'){  result=getTextByXpath(xpthArr); return result;}
  if(typeof xpthArr=='object'){ 
    for(var i=0;i<xpthArr.length;i++){
      var tmp=getTextByXpath(xpthArr[i]);
      if(tmp.trim()==''){ continue;}
      else{
          result=tmp;
          return result;
        }
      }
  }
}




JavaScript 定位取得 xpath 的文本值的函数 已经 trim 函数


function getTextByXpath(xpth){
  var result="";
   
  var iterator = document.evaluate(xpth, document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null );

try {
  var thisNode = iterator.iterateNext();
  
  while (thisNode) {
    if(typeof thisNode.textContent !='undefined') {result=result+thisNode.textContent ;}
    thisNode = iterator.iterateNext();
  }	
}
catch (e) {
  dump( 'Error: Document tree modified during iteration ' + e );
}
  return result;
}

/**
* 删除左右两端的空格
*/
String.prototype.trim=function()
{
     return this.replace(/(^\s*)(\s*$)/g, '');
}
/**
* 删除左边的空格
*/
String.prototype.ltrim=function()
{
     return this.replace(/(^\s*)/g,'');
}
/**
* 删除右边的空格
*/
String.prototype.rtrim=function()
{
     return this.replace(/(\s*$)/g,'');
}


function lookupElementByXPath(path) {
    var evaluator = new XPathEvaluator(); 
    var result = evaluator.evaluate(path, document.documentElement, null,XPathResult.FIRST_ORDERED_NODE_TYPE, null); 
    return result.singleNodeValue;
}


CSS 定位是弥补 xpath 不足之处的利器

css 模糊匹配类似 perl ,假设您想选择 class 属性中包含 important 的元素,可以用下面这个选择器做到这一点:

p[class~="important"] {color: red;}
分享到:
评论

相关推荐

    javascript完全学习手册1 源码

    7.2.6 定位符 164 7.2.7 原义字符 167 7.3 RegExp对象 168 7.3.1 创建RegExp对象实例的 两种方式 168 7.3.2 RegExp对象的属性 170 7.3.3 RegExp对象的方法 173 7.4 String对象中与正则表达式 有关的方法 177 第8章 ...

    javascript完全学习手册2 源码

    7.2.6 定位符 7.2.7 原义字符 7.3 RegExp对象 7.3.1 创建RegExp对象实例的两种方式 7.3.2 RegExp对象的属性 7.3.3 RegExp对象的方法 7.4 String对象中与正则表达式有关的方法 第8章 高级DoM技术 8.1 ...

    element-xpath:为单个 DOM 元素获取一致的 xpath

    这个库提倡在 xpaths 中使用类名,以便定位动态 DOM 的元素,其兄弟元素可能会根据应用程序状态而改变。用法包括脚本 [removed][removed]在控制台上显示单击元素的 xpath document.body.addEventListener("click", ...

    省市县三级联动

    &lt;script type="text/javascript" src="jsAddress.js"&gt; 省:&lt;select id="cmb"&gt;&lt;/select&gt; 市:&lt;select id="cmbCity"&gt;&lt;/select&gt; 区:&lt;select id="cmbArea"&gt;&lt;/select&gt; &lt;br /&gt; 省:&lt;select id="Select1"&gt;&lt;/...

    XML及其编程与应用

    07定位、链接与查询1-XPath 07定位、链接与查询2-链接 07定位、链接与查询3-XQuery 08编程接口1-概述与DOM 08编程接口2-SAX 08编程接口3-JDOM 08编程接口4-NET 09应用1-XHTML 09应用2-电子商务 09应用3-...

    爬虫入门实战系列(六)正则/bs4/xpath比较-爬取公众号文章正文

    在浏览器网页界面,用熟悉的F12,及快捷键组合“Shift+Ctrl+c”,很容易就定位到正文内容的标签,是在一堆section标签,里的span标签里。 PS:在观察网页结构时,↓会留意到这个微信网页是有JavaScript加载的内容的...

    支持抓取javascript渲染的页面的简单实用高效的python网页爬虫抓取模块.zip

    这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。...

    软件测试->自动化测试;利用java语言结合selenium技术实现对购物网站的自动化测试

    利用java+selenium技术实现了自动化测试,首先通过获取该网站地址,然后通过元素定位的方式对每个html中的元素进行定位,例如:Xpath,id,name,class等属性进行定位,来实现对应的操作,实现模拟用户点击,输入各种...

    JavaScript高级教程

    第 1 章 JavaScript 是什么...............................................1 3 1.1 历史简述..............................................1 1.2 JavaScript 实现................................................

    使用JS在Android手机上实现:点击后返回X、Y坐标的html文件

    Android系统在部分界面是不允许截图的,也就不能很容易的获取到ID、name、xpath等信息来定位元素,这个时候就需要通过X、Y坐标来定位了。 使用方法:将这个文件放到web服务器,使用Android手机访问该页面。 点击...

    javascript Xml增删改查(IE下)操作实现代码

    html文件: 代码如下: &lt;!DOCTYPE html PUBLIC ... &lt;head&gt; &lt;title&gt;js操作Xml增删改查(IE下)&lt;/title&gt; [removed]&lt;...– /*等解决的问题: 1.xpath到底是定位到哪一层,怎样定位到比如root这一级还是p

    小黄瓜.zipJQuery插件

    同年9月,jQuery 1.2版发布,它去掉了对XPath选择符的支持,原因是相对于CSS语法它已经变得多余了。这一版能够对效果进行更为灵活的定制,而且借助新增的命名空间事件,也使插件开发变得更容易。同时,jQuery UI项目...

    蓝色的.zipJQuery插件

    同年9月,jQuery 1.2版发布,它去掉了对XPath选择符的支持,原因是相对于CSS语法它已经变得多余了。这一版能够对效果进行更为灵活的定制,而且借助新增的命名空间事件,也使插件开发变得更容易。同时,jQuery UI项目...

    mystique:用于确定哪些 CSS 样式影响给定元素的工具

    定位一个元素要更改要为其计算样式的元素,您需要找到它的 XPath: 右键单击元素并选择“检查元素” 在“元素”选项卡的 DOM 浏览器中,选择“复制 XPath” 将该 XPath 粘贴到与域名相关的父级下的theme

    LetXPath:LetXPath-社区驱动的产品-开源项目

    LetXPath用于在任何DOM中找到最佳的XPath,CSS和唯一的定位器。 主要用于测试人员以减少他们的工作量,以便他们可以将更多精力放在业务需求上。 为什么选择LetXPath? LetXPath是由质量检查人员社区和质量检查人员...

    wdio-cv-image-recognition

    传统HTML定位器(xpath,css,class等)具有以下缺点: 陡峭的学习曲线; 定位器的创建是一个耗时的过程。 由于定位器属性易于更改,因此需要高度维护; Flaky Test Automation测试的结果会不时更改属性; ...

    json-pointer:JSON指针实现

    类似于XPath for XML,用于Json的JsonPointer用于使用格式字符串定位文档的一部分。 库功能: JsonPointer路径解析和验证 文档中的元素搜索 JsonPointer路径组件编码 接受的Json文件格式: 界面 struct ...

    基于C#.NET+PhantomJS+Sellenium的高级网络爬虫程序.zip

    可执行Javascript代码、触发各类事件、操纵页面Dom结构。 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据...

    详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度

    使用 XPath 定位到文档的制定部分。  2.使用 JXON 将其转换成 JavaScript 对象树。  3.手工的 解析和序列化 XML 为字符串或对象。  4.使用 XMLSerializer 把 DOM 树序列化成字符串或文件。  5.如果你预先知道 ...

    基于Flask+Pyecharts实现的实习僧网站数据可视化源码+项目说明.zip

    主程序文件为spider-demo.py,在运行前需要对所爬取的网页进行网页结构分析,对所需数据进行xpath定位或者re正则定位,提取我们所需要的数据。 然后,分析服务器是否存在反爬虫,比如字体反爬、ip封锁、验证码等,...

Global site tag (gtag.js) - Google Analytics