Web UI 自动化单个xpath抓取插件详解
原文地址http://blog.csdn.net/kaka1121/article/details/51878346

单个控件获取
需求:
右键到某个控件上,就能获取到至多三个可以唯一定位该元素的相对Xpath,并将其标记为以上8种抽象控件之一。
可抓取控件节点名:
input(type=="text"、"submit"、"button"、"reset"、"image"、"checkbox"、"radio"、"file")
textarea、select、table、a、button、span、img、i、font、div
和上面抽象出来的8种控件对应起来,如下图:
抓取优先级&策略
如上图所示:
1.如果存在id,且唯一,则直接用id,其Xpath为:
//input[@id=’main’]
2.其次,如果存在name,且唯一,则直接用name,其Xpath为:
//a[@name=’name’]
3.再次,如果存在text,且唯一,则直接用text,其Xpath为:
//span[contains(text(),’aaa’]
4.如果还不能唯一定位,且存在name、text,二者组合能唯一定位,则其Xpath类似:
//Select[@name=’name’ and contains(text(),’aaa’]
5. 如果还不能唯一定位,则依次尝试"value","title","class","style",如果能通过其一唯一定位,则其Xpath类似:
//XXX[@class(或者是value、title、style)=’class’]
6.如果还不能唯一定位,则递归寻找其父节点(依次单看id、name、text、title),直到找到唯一。 。
再从其父节点开始,取绝对路径(元素索引),加起来唯一定位,其Xpath类似:
//input[@id=’main’]/div[1]/span[2]
当然,这种情况开始,就应该跟开发提可测性,增加唯一的id、name之类了。
7.如果还不能唯一定位,则寻找其所有子节点(依次单看id、name、text、title),直到找到唯一。
再使用其子节点Xpath来唯一定位,其Xpath类似:
//input[@id=’main’]/parent::XXX
8.如果还不能唯一定位,则寻找其所有兄弟节点(依次单看id、name、text、title),和自己在兄弟节点中的index,直到找到唯一。
//input[@id=’main’]/parent::XXX/XX[3]
9.以上全不满足,则给出其绝对路径(元素索引),来唯一定位,其Xpath类似:
/XXX[1]/XX[2]/X[5]/XXXXX[2]
示例:
右键—>点击
抓取结果:
如上图所示,以百度首页--“百度一下”按钮为抓取对象,抓取出的三个能唯一定位的Xpath如图中③所示。
另外,插件还对控件所在frame(①)进行抓取,此处无frame信息。
如上图中②所示,控件被识别为click类,提供”点击”方法。
如上图中④所示,控件被命名为“su”,调用时使用该名字,并附上备注“su”(⑤)作为控件的说明。
点击“生成代码”
生成基于框架的代码入下:
@Xpath(xpath={"//input[@id='su']", "//input[contains(@value,'百度一下')]", "//input[contains(@class,'bg s_btn btnhover')]"})
@Frame(frame="")
@Description(description="su")
public Click su;
结合,框架,便能对控件进行点击操作。
Web UI 自动化单个xpath抓取插件详解的更多相关文章
- Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)
概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...
- UI自动化学习笔记- UnitTest单元测试框架详解
一.UnitTest基本使用 1. UnitTest框架 1.1 什么是框架 说明: 框架英文单词frame 为解决一类事情的功能集合 1.2什么是UnitTest框架 概念:UnitTest是pyt ...
- phpquerylist 抓取数据详解
参考文档 https://doc.querylist.cc/site/index/doc
- Chrome 行情抓取插件
Chrome 行情抓取插件 上班想偷偷摸摸看行情?自己动手写插件啊,尝试写了一个,新建文件夹,命名为StockMonitor,放入文件如下: 3个.png图标文件,19X19.48X48.128X12 ...
- selenium(12)-web UI自动化项目实战(PO模式,代码封装)
web UI自动化项目实战-项目 项目使用禅道,所以你需要搭建1个禅道,搭建禅道的方法和步骤见 https://www.cnblogs.com/xinhua19/p/13151296.html 搭建U ...
- 【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
问题描述 在App Service For Windows的环境中,我们可以通过ArmClient 工具发送POST请求在Web应用的实例中抓取网络日志,但是在App Service For Linu ...
- Maven系列第6篇:生命周期和插件详解,此篇看过之后在maven的理解上可以超越同级别90%的人!
maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能. 这是maven系列第6篇. 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部 ...
- 抓包工具:tcpdump抓包命令详解
抓包工具:tcpdump抓包命令详解 简介: tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以 ...
- fillder 抓包工具详解
一.安装详解 直接点击.exe可执行文件,一直下一步直到安装完成即可.打开主要为5个部分: 二.安装jmeter插件详解 三.工具详解 3.1:工具条:,可以给指定的请求添加备注信息,在导出后可以查看 ...
随机推荐
- 【MySql】脚本备份数据库
#!/bin/bash #this is a script of mysql backup #Mysql="mysql" #MysqlDump="mysqldump&qu ...
- Unity获取文件夹下指定类型的文件数量
有个文件夹里面有很多的图片,都是.png格式的,要是一个一个的拖到脚本上觉得很麻烦,就写了一个遍历添加的cars,变量是List<Sprite> 代码如下: using UnityEngi ...
- c++开发之对应Linux下的sem_t和lock
http://www.cnblogs.com/P_Chou/archive/2012/07/13/semaphore-and-mutex-in-thread-sync.html http://blog ...
- 怎么用ChemDraw连接两个结构片段
作为最新版的ChemOffice 15.1的核心组件,ChemDraw几乎能解决所有平面化学结构中的绘制问题.如果用户想连接两个分开的结构片段,ChemDraw提供两种连接两个化学结构片段的方法,分别 ...
- zoj 3362(最大费用)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3904 思路:费用流的题,增加一个超级源点和一个超级汇点,然后就是连边 ...
- apacheserver全局配置具体解释
server标识相关指令: ServerName ServerAdmin ServerSignature ServerTokens UseCanonicalName UseCanonicalPhysi ...
- Android Studio添加assets文件夹
Step #1:调出项目结构管理区域 View->Tool Windows->Project Step #2:结构管理区域选择“Project” Step #3:新建"asset ...
- datatables如何把列设置成hidden隐藏域?
官网:https://datatables.net/reference/option/设置: visible: false如下: <!DOCTYPE html><html>&l ...
- SpringMVC的解释与搭建Maven私有代理服务器
SpringMVC静态资源处理 通常会配置SpringMVC拦截所有请求 即将DisptcherServlet的url-pattern设置为 / 此时会导致SpringMVC同时拦截.css .j ...
- CH5402 选课【树形DP】【背包】
5402 选课 0x50「动态规划」例题 描述 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了 N(N≤300) 门的选修课程,每个学生可选课程的数量 M 是 ...