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;
结合,框架,便能对控件进行点击操作。
最新文章
- SSH配置免密码登陆
- [Leetcode][JAVA] Minimum Window Substring
- exe文件无法打开
- iOS开发备忘录:自定义UINavigationBar背景图片和Back按钮
- 不用synchronized块的话如何实现一个原子的i++?
- flexbox布局模式-- 浅谈
- cf B. Simple Molecules
- 阅读http://zh.lucida.me/有感
- WPF文本框只允许输入数字
- NLP系列(2)_用朴素贝叶斯进行文本分类(上)
- Linux2.6内核--抢占
- gdb学习(二)[第二版]
- 机器学习基石10-Logistic Regression
- Newtonsoft.Json解析数组
- tkinter学习系列(二)之窗口的设置
- 只打开一次浏览器,生成html测试报告<;小紧张中......>;
- python 小练习4
- maven 创建war类型项目
- paxos 分布一致性算法的一些资料
- (线段树 区间查询更新) Can you answer these queries? -- hdu--4027
热门文章
- JAVA学习资源网站
- 【BZOJ】1492: [NOI2007]货币兑换Cash(cdq分治)
- 我学cocos2d-x (一) 游戏基本概念:坐标系与Anchor Point
- [转]Shell脚本中获取SELECT结果值的方法
- iOS文件路径相关的方法
- 75、JSON 解析库---FastJson, Gson
- sql 提升查询效率 group by option hash group
- 修改DedeCMS图片上传路径命名规则的具体方法步骤
- CSS文本对齐text-align详解
- Python全栈day13(作业讲解字典嵌套实现用户输入地址信息添加及查看)