JavaScript:使用Xpath定位网页元素(含Iframe定位)

  • 一、非Iframe内元素使用Xpath定位
  • 二、Iframe内元素使用Xpath定位(非跨域Iframe)
  • 三、实战案例(以获取QQ邮箱中收件列表为例)
    • 1. 定位Iframe元素
    • 2. 获取所有邮件标题和概要

一、非Iframe内元素使用Xpath定位

  1. 在JS中定义使用Xpath的函数

注:在Chrome开发者工具Console中可以直接使用该函数,无需定义

function $x(STR_XPATH) {var xresult = document.evaluate(STR_XPATH, document, null, XPathResult.ANY_TYPE, null);var xnodes = [];var xres;while (xres = xresult.iterateNext()) {xnodes.push(xres);}return xnodes;
}

二、Iframe内元素使用Xpath定位(非跨域Iframe)

  1. 改进Xpath方法,将document作为参数,即可实现在Iframe中使用Xpath定位元素
function $x(DOCUMENT, STR_XPATH) {var xresult = DOCUMENT.evaluate(STR_XPATH, DOCUMENT, null, XPathResult.ANY_TYPE, null);var xnodes = [];var xres;while (xres = xresult.iterateNext()) {xnodes.push(xres);}return xnodes;
}
  1. 通过ID或Class属性定位Iframe,可以通过以下代码可以获取到Iframe内的document对象
document.getElementById('iframe的ID').contentWindow.document // 通过ID定位
document.getElementsByClassName('iframe的Class').contentWindow.document // 通过Class定位

三、实战案例(以获取QQ邮箱中收件列表为例)

1. 定位Iframe元素

// 方式一:使用getElementById()定位Iframe
var iframe_document = document.getElementById('mainFrame').contentWindow.document;
// 方式二:使用Xpath定位Iframe
var iframe_document = $x(document, "//iframe[@id='mainFrame']")[0].contentWindow.document;

2. 获取所有邮件标题和概要

function get_email_infos(){var email_infos = [];var iframe_document = document.getElementById('mainFrame').contentWindow.document;var emails = $x(iframe_document, "//table[contains(@class, 'i') and not(contains(@class, 'bold'))]");    for(var k in emails){var email_title = emails[k].getElementsByClassName("tt")[0].textContent;var email_desc = emails[k].getElementsByClassName("no")[0].textContent;email_infos.push({'title': email_title, 'desc': email_desc});}return email_infos;
}

JavaScript:使用Xpath定位网页元素(含Iframe定位)相关推荐

  1. 第八章 定位网页元素

    第八章 定位网页元素 一,定位 position属性有以下属性值: static:默认值,没有定位 relative:相对定位 absolute:绝对定位 fixed:固定定位 1.static ​ ...

  2. seleniumpython定位网页元素方法_使用Selenium对网页元素进行定位的诸种方法

    使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接. 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了 ...

  3. seleniumpython定位网页元素方法_Python+Selenium 定位元素

    1.摘取网页上所有邮箱 练习场景:在某一个网页上有些字段是我们感兴趣的,我们希望摘取出来,进行其他操作.但是这些字段可能在一个网页的不同地方.例如,我们需要在关于百度页面-联系我们,摘取全部的邮箱. ...

  4. (干货)你知道python爬虫定位网页元素有几种方式嘛,今天带你一一了解。

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:拓荒者 ( 想要学习Python?Python学习交流 ...

  5. html css整理笔记,HTML CSS整理笔记 (八) 定位网页元素

    ----8 定位网页元素---- 51.Position属性:指定盒子的位置,相对它父级的位置或它自身应该在的位置. (1)static 默认无定位,元素按照标准文档布局. (2)relative相对 ...

  6. php生成网页按钮,JavaScript实现自动生成网页元素功能(按钮、文本等)_javascript技巧...

    创建元素的方法: 1.利用createTextNode()创建一个文本对象 2.利用createElement()创建一个标签对象 3.直接利用容器标签中的一个属性:innerHTML-----本质上 ...

  7. 网页元素常见的定位方式

    1. 流式定位 这是网页元素默认的定位方式,网页元素按照其HTML标签的先后顺序,在网页内依次显示,就像液体一样"流动",所以称为"流式定位",这种方式将所有网 ...

  8. html网页定位,HTML_定位网页元素(示例代码)

    一.position属性 意指:盒子的位置. 四个属性: 1.static:默认值,没有定位,元素按照标准文档流进行布局. 2.relative:相对定位,使用相对定位的盒子位置以标准文档流进行的排办 ...

  9. 快速获取网页元素xpath简单方法

    1.首先打开对应网页 2.点击F12 或者 Ctrl+Shift+i 或者点击浏览器右上角三个点.再点击 更多工具 ,再点击开发人员工具,如下图: 3.点击左上角的箭头,再在网页中点击需要查找的网页元 ...

最新文章

  1. 2018-3-27 遗传算法中的轮盘赌
  2. R语言可视化包ggplot2包通过因子变量设置图像颜色实战
  3. mysql 8.0免安装配置_Mysql8.0免安装包配置方法
  4. 《编程珠玑》 读书笔记
  5. 微信小程序_wxml学习
  6. linux上很方便的上传下载文件工具rz和sz
  7. CentOS下安装beanstalkd服务
  8. 华为员工:工作3年,年薪50万,为什么要辞职?出租车司机觉得我在吸毒!
  9. redis新数据类型-HyperLogLog
  10. 优先级反转之futex(一)
  11. 使用arcgis进行夜间灯光数据处理
  12. Android 2.2模拟器调出中文输入法
  13. 电脑ssl协议 linux,基于ssl协议和openssl工具建立私有CA
  14. MySQL-redo和undo
  15. 洛谷:P1042 [NOIP2003 普及组] 乒乓球 C++详解
  16. 从键盘输入圆柱体的半径和高,求圆柱体的表面积和体积
  17. 【烈日炎炎战后端】操作系统(1.1万字)
  18. 打字慢能学计算机吗,提高电脑打字速度,实现快速盲打,这样的学习方法很管用!...
  19. 如何把图片转换成文字?这几个方法或许可以帮到你
  20. 某电商网站的数据库设计(5)——销售信息总表(视图)

热门文章

  1. C语言 sqrt()函数
  2. C语言 数组下标越界 - C语言零基础入门教程
  3. 如何将无限循环小数转化为分数
  4. 2021-04-20 海鲜自助餐团建
  5. 网站SSL证书如何选择(针对个人和企业)
  6. php 正则抓取网页的table数据
  7. 双层循环时,外循环越小,耗时越小
  8. 小程序 绘制饼状图
  9. 计算e=1+1/1!+1/2!+1/3!+...,当1/n!<1e-7时停止
  10. 张益唐喊你参加阿里数学大赛:奖金400多万,今年还有文科开放题