原文地址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抓取插件详解的更多相关文章

  1. Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)

    概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...

  2. UI自动化学习笔记- UnitTest单元测试框架详解

    一.UnitTest基本使用 1. UnitTest框架 1.1 什么是框架 说明: 框架英文单词frame 为解决一类事情的功能集合 1.2什么是UnitTest框架 概念:UnitTest是pyt ...

  3. phpquerylist 抓取数据详解

    参考文档 https://doc.querylist.cc/site/index/doc

  4. Chrome 行情抓取插件

    Chrome 行情抓取插件 上班想偷偷摸摸看行情?自己动手写插件啊,尝试写了一个,新建文件夹,命名为StockMonitor,放入文件如下: 3个.png图标文件,19X19.48X48.128X12 ...

  5. selenium(12)-web UI自动化项目实战(PO模式,代码封装)

    web UI自动化项目实战-项目 项目使用禅道,所以你需要搭建1个禅道,搭建禅道的方法和步骤见 https://www.cnblogs.com/xinhua19/p/13151296.html 搭建U ...

  6. 【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志

    问题描述 在App Service For Windows的环境中,我们可以通过ArmClient 工具发送POST请求在Web应用的实例中抓取网络日志,但是在App Service For Linu ...

  7. Maven系列第6篇:生命周期和插件详解,此篇看过之后在maven的理解上可以超越同级别90%的人!

    maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能. 这是maven系列第6篇. 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部 ...

  8. 抓包工具:tcpdump抓包命令详解

    抓包工具:tcpdump抓包命令详解 简介: tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以 ...

  9. fillder 抓包工具详解

    一.安装详解 直接点击.exe可执行文件,一直下一步直到安装完成即可.打开主要为5个部分: 二.安装jmeter插件详解 三.工具详解 3.1:工具条:,可以给指定的请求添加备注信息,在导出后可以查看 ...

随机推荐

  1. Maven实战(三)——多模块项目的POM重构

    在本专栏的上一篇文章POM重构之增还是删中.我们讨论了一些简单有用的POM重构技巧,包含重构的前提--持续集成,以及怎样通过加入或者删除内容来提高POM的可读性和构建的稳定性.但在实际的项目中,这些技 ...

  2. C++ map修改指定key的value

    对于修改C++指定key的value,网上查了很多,都说直接insert就会覆盖原来的值,是否是这样的呢?  C++ Code  12345678910111213141516171819202122 ...

  3. easyui上传文件

    效果图: 代码: <form id="importFileForm" method="post" enctype="multipart/form ...

  4. ios开发之 -- 强制横屏

    在写项目的时候,会遇到很多稀奇古怪的需求,我就碰到一个写一个网站,需要强制横屏,然后不需要上架,网上看了很多大神的需求,基本都能实现,但是不太好用, 自己参考搞了一个,代码如下: AppDelegat ...

  5. mac 10.9 dock在多屏幕间移动

    想要在哪个屏幕使用dock,就在这个屏幕把鼠标移动到最底部即可.神奇吧?太意外了...居然被我发现了...

  6. shell脚本学习总结11--脚本调试

    参数: -n    不执行脚本,仅检查语法是否错误 -v    将脚本内容输出到屏幕上,然后执行脚本 -x   执行脚本,并将内容输出到屏幕 -n [root@new sbin]# sh -n deb ...

  7. m2014-c->c模拟java的hashmap容器类

    转自:http://bbs.csdn.net/topics/390034346 在java中像ArrayList,HashMap都是现成的,在java.util包中,用的时候直接import java ...

  8. Excel 一个工作表进行按行数拆分

    1. 如下Excel表,总共有120多行数据,如何将以50行数据为一个工作表进行拆分 Sub ZheFenSheet() Dim r, c, i, WJhangshu, WJshu, bt As Lo ...

  9. Django学习笔记第四篇--数据处理URL和数据库

    一.URL: 1.基础的URL与视图函数的映射 from django.conf.urls import url from django.contrib import admin from appna ...

  10. 离线微博工具Open Live Writer(Windows Live Writer)安装过程及server error 500错误解决

    必备条件: .net framework 3.5框架(大概是要求3.5或以上,不确定,好像没有人遇到和这个相关的问题) 2017年7月27日最新官方版0.6.2英文离线客户端网盘下载(官网的安装包无法 ...