XPath编写规则学习
辅助工具:firefox安装findbugs,view Xpath
firefox :Xpath验证方式:$x("xpath"); 粘贴xpath语句回车即可
定位:
1、依靠自己属性,文本定位:
//td[text()='test']
//div[contains(@class,'test')]
//input[@type='radio' and @value='1']
//span[@name='bruce' and text()='bruce2'] 或 //span[@name='bruce'][ text()='bruce2'] --and关键字
//span[@name='bruce' or text()='bruce2'] --or关键字
2、依靠父节点定位:
//div[@class='test mytest']/div
//div[@id='test']/div
3、依靠子节点定位
//div[div[@id='test']] --寻找含有id=test的div的div
//div[div[@name='test']]
//div[p[@id='test']]
4、混合型定位
//div[div[@name='test']]/img
//td[a//font[contains(text(),'test')]]//input[@type='checkbox']
5、高级方法
(1)following-sibling ---寻找紧跟定位到的元素的下一个元素
例子://input[@id='1234']/following-sibling=input --定位紧跟id=1234的下一个的input元素,同级有效
//input[@id='1234']/following-sibling::input ,input后可再跟条件
(2)preceding-sibling ---寻找紧跟定位到的元素的上一个元素
例子://input[@id='123']/preceding-sibling=span --定位紧跟id=123的上一个span元素
//input[@id='1234']/preceding-sibling::input ,input后可再跟条件
(3)starts-with --判断是否以某关键字开头
例子://input[starts-with(@id,'test')]
(4)contains -- 是否包含某关键字
例子: //td[a//font[contains(text(),'test')]]//input[@type='checkbox']
(5)not ---不包含某关键字
例子://input[not(@id='1234')]
//span[not(contaions(text(),'xpath'))]
6、索引关键字,position,last
(1)position()=2
position()>3
position()<5
例子://div[@id='test']/span[2]或
//div[@id='test']/span[position()=2] --正数第2个span
(2)last()-1
例子://div[@id='test']/span[last()-2] --倒数第2个span元素
7、根据属性定位
//div[@class] --查找含有class属性的div
//div[@class='test'] --查找含有class属性且class属性值为test的的div元素
8、不常用关键字
(1)substring,语法:substring(str,start_postion,length) ,从1开始计算
例子://div[@id='test']/span[substring(@name,3,5)='bruce'] --找name的第三位开始总共5位字母为bruce的span
(2)substring-before ,语法:substring-before(str,substr)
例子://div[@id='test']/span[substring-before(@class,'-')='spanclass'] --查找分割关键字前面的字符为spanclass的span
(3)substring-after,语法:substring-after(str,substr)
例子://div[@id='substring']/span[substring-after(@class,'-')='spanclass'] --查找分割关键字后面的字符为spanclass的span
9、通配符:*
//span[@*='bruce']
//*[@*='bruce']
//*[@name='bruce']
10、axes 轴
(1)parent 父节点
例子://div[span[text()='+++test']]/parent::div[contaions(text(),'test')] --查找含有span的text为+++test的的div的父节点
//div[span[text()='+++test']]/parent::div/span[contaions(text(),'test')]
(2)ancestor 祖先节点
例子://div[span[text()='+++test']]/ancestor::div
(3)descendant 孙子节点
例子://div[span[text()='+++test']]/descendant::div --会将该节点下的所有div打印出来
//div[span[text()='+++test']]/descendant::div/span[contaions(text(),'test')]
(4)following 将当前节点下后面所有的指定节点取出
例子://div[text()='current NodeA']/following::div --会将current NodeA后面的所有的div取出来,后续的div可再加条件判断
(5)preceding 将当前节点下前面所有的指定节点取出
例子://div[text()='current NodeA']/preceding::div --会将current NodeA前面的所有的div取出来,后续的div可再加条件判断
- Mayi_XPath编写规则学习
XPath编写规则学习 辅助工具:firefox安装findbugs,view Xpath firefox :Xpath验证方式:$x("xpath"); 粘贴xpath语句回 ...
- Selenium2学习-002-Selenium2 Web 元素定位及 XPath 编写演示示例
此文主要对 Selenium2 的 Web 元素定位及 XPath 编写示例,敬请各位亲们参阅,共同探讨.若有不足之处,敬请各位大神指正,不胜感激! 通过 Firefox(火狐)浏览器的插件 Fire ...
- 元素定位-XPATH定位方法总结
1.Xpath定位方法探讨 xpath是比较常用的一种定位元素的方式,因为它很方便,缺点是,消耗系统性能.如果Xpath使用的比较好,几乎可以定位到任何页面元素,而且受页面变化影响较小. 1.1.什么 ...
- Python+Selenium 利用ID,XPath,tag name,link text,partial link text,class name,css,name定位元素
使用firefox浏览器,查看页面元素,我们以“百度网页”为示例 一.ID定位元素 利用find_element_by_id()方法来定位网页元素对象 ①.定位百度首页,输入框的元素 ②.编写示 ...
- 【转载】Xpath定位方法深入探讨及元素定位失败常见情况
一.Xpath定位方法深入探讨 (1)常用的Xpath定位方法及其特点 使用绝对路径定位元素. 例如: driver.findElement(By.xpath("/html/body/div ...
- Xpath定位方法深入探讨及元素定位失败常见情况
一.Xpath定位方法深入探讨 (1)常用的Xpath定位方法及其特点 使用绝对路径定位元素. 例如: driver.findElement(By.xpath("/html/body/div ...
- Hawk 3. 网页采集器
1.基本入门 1. 原理(建议阅读) 网页采集器的功能是获取网页中的数据(废话).通常来说,目标可能是列表(如购物车列表),或是一个页面中的固定字段(如JD某商品的价格和介绍,在页面中只有一个).因此 ...
- Hawk 1.1 快速入门(链家二手房)
链家的同学请原谅我,但你们的网站做的真是不错. 1. 设计网页采集器 我们以爬取链家二手房为例,介绍网页采集器的使用.首先双击图标,加载采集器: 在最上方的地址栏中,输入要采集的目标网址,本次是htt ...
- 【重磅开源】Hawk-数据抓取工具:简明教程
Hawk-数据抓取工具:简明教程 标签(空格分隔): Hawk Hawk: Advanced Crawler& ETL tool written in C#/WPF 1.软件介绍 HAWK是一 ...
随机推荐
- 伪样式:hover ,:active,:focus
<!doctype html>无标题文档 #name:focus { background: #0F6 } #password:hover { background: #F00 } #pa ...
- WPF自学入门(八)WPF窗体之间的交互
今天我们一起来看一下WPF窗体之间的交互-窗体之间的传值.有两个窗体,一个是父窗体,一个是子窗体.要将父窗体的文本框中的值传递给子窗体中的控件.我们该怎么实现? 接下来我们一起来实现窗体之间的传值,在 ...
- HBase新的客户端接口
最近学习接触HBase的东西,看了<Habase in Action>,但里面关于HBase接口都是过时的接口,以下为HBase新的客户端接口: package com.n10k; imp ...
- JavaScript ES6 的let和const
1 作用域和提升 1.1 作用域(Scope) 某个变量名或者函数名,在某个程序片段中是否可见或者可访问,如果是,那么这个程序片段就是这个变量名或者函数名的作用域.比如: var name = &qu ...
- centos7服务的管理
centos7上服务管理 author:headsen chen 2017-10-16 16:03:53 1,启动服务(每条都可以) systemctl start httpd ...
- 手机端原生js实现下拉刷新数据
HTML结构如下: <div class="outerScroller comment"> <div class='scroll comment'> < ...
- 如何给自己的外包APP开发报价?
作者:CODING 兄弟,你看做这样一个软件需要多少钱?" 这估计是所有软件从业人员被问的最多也是最无奈的一个问题.这个问题等同于,"你看装修一个100平米的房子需要多少钱?&qu ...
- Python进阶_面对对象&面对过程
这节主要讲面对对象与面对过程两种编程思想的主要区别. 一. 简单对比 面向过程是一种基础的方法,它考虑的是实际的实现步骤,一般情况下,面向过程是自顶向下逐步求精,其最重要的是模块化的思想方法. 面向对 ...
- 二分查找(binary search)java实现及时间复杂度
概述 在一个已排序的数组seq中,使用二分查找v,假如这个数组的范围是[low...high],我们要的v就在这个范围里.查找的方法是拿low到high的正中间的值,我们假设是m,来跟v相比,如果m& ...
- Oracle服务器和客户端的安装和卸载
Oracle 11g服务器与客户端的完全卸载方式与前些版本有了改变: 一.卸载前准备: 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务. 二.批处理卸载 ...