Web自动化框架LazyUI使用手册(4)--控件抓取工具Elements Extractor详解(批量抓取)
概述
前面的一篇博文详细介绍了单个控件抓取的设计思路&逻辑以及使用方法,本文将详述批量控件抓取功能。
批量抓取:打开一个web页面,遍历页面上所有能被抓取的元素,获得每个元素的iframe、和三个唯一定位控件的xpath,以及被抓取元素的缩略展示,供使用者勾选,并生成基于LazyUI框架的Java代码,解决整个页面元素的获取问题。
下载:
http://download.csdn.net/detail/kaka1121/9571942
拖拽安装到chrome即可右键使用
工具由来和设计思路在上篇博文中已有详细描述,此文中不再赘述。
http://blog.csdn.net/kaka1121/article/details/51878346
使用:
以百度首页为例,页面长这样:
点击右键
得到的结果如下(前7个):
简单来说,批量获取就是把每个控件单个获取的结果,以表格形式呈现,并且对获取到的控件做一个直观的展示(“控件展示”列),以便用户勾选需要的控件,生成代码。
如上图所示:
第一行为百度搜索框的抓取结果,
控件类型为“text”,
默认勾选生成代码,因为可以用id唯一定位,
给出了三个可对其唯一定位的xpath:
//input[@id='kw']
//input[@name='wd']
//input[contains(@class,'s_ipt')]控件名称和描述都默认取其id,可自行修改。
点击全选,可以将工具抓取到的所有控件勾选,(能用ID或name唯一定位的,默认勾选“生成代码”)
也可以在xpath列勾选抓取到的xpath,可以把那些不稳定的xpath勾选掉,
在最下面填写pagebean的包名和类名后,会生成一个.java文件,包含了bean层所有的代码,直接拷贝到工程中即可使用。
package bean; import lazy.test.ui.annotations.*; import lazy.test.ui.beans.PageBean; import lazy.test.ui.controls.*; import lazy.test.ui.browser.BrowserEmulator; public class baidu extends PageBean { @Xpath(xpath={"//input[@id='kw']", "//input[@name='wd']", "//input[contains(@class,'s_ipt')]"}) @Frame(frame="") @Description(description="kw") public Text kw; @Xpath(xpath={"//input[@id='su']", "//input[contains(@value,'百度一下')]", "//input[contains(@class,'bg s_btn')]"}) @Frame(frame="") @Description(description="su") public Click su; @Xpath(xpath={"//a[@name='ime_hw']", "//a[contains(text(),'手写')]", "/html/body/div[3]/div[1]/div/div[1]/div/form/span[3]/span/ul/li[1]/a"}) @Frame(frame="") @Description(description="imehw") public Click imehw; @Xpath(xpath={"//a[@name='ime_py']", "//a[contains(text(),'拼音')]", "/html/body/div[3]/div[1]/div/div[1]/div/form/span[3]/span/ul/li[2]/a"}) @Frame(frame="") @Description(description="imepy") public Click imepy; @Xpath(xpath={"//a[@name='ime_cl']", "//a[contains(text(),'关闭')]", "/html/body/div[3]/div[1]/div/div[1]/div/form/span[3]/span/ul/li[4]/a"}) @Frame(frame="") @Description(description="imecl") public Click imecl; @Xpath(xpath={"//a[@name='tj_trnuomi']", "//a[contains(text(),'糯米')]", "/html/body/div[3]/div[1]/div/div[3]/a[1]"}) @Frame(frame="") @Description(description="tjtrnuomi") public Click tjtrnuomi; @Xpath(xpath={"//a[@name='tj_trnews']", "/html/body/div[3]/div[1]/div/div[3]/a[2]"}) @Frame(frame="") @Description(description="tjtrnews") public Click tjtrnews; @Xpath(xpath={"//a[@name='tj_trhao123']", "//a[contains(text(),'hao12')]", "/html/body/div[3]/div[1]/div/div[3]/a[3]"}) @Frame(frame="") @Description(description="tjtrhao123") public Click tjtrhao123; @Xpath(xpath={"//a[@name='tj_trmap']", "/html/body/div[3]/div[1]/div/div[3]/a[4]"}) @Frame(frame="") @Description(description="tjtrmap") public Click tjtrmap; @Xpath(xpath={"//a[@name='tj_trvideo']", "/html/body/div[3]/div[1]/div/div[3]/a[5]"}) @Frame(frame="") @Description(description="tjtrvideo") public Click tjtrvideo; @Xpath(xpath={"//a[@name='tj_trtieba']", "/html/body/div[3]/div[1]/div/div[3]/a[6]"}) @Frame(frame="") @Description(description="tjtrtieba") public Click tjtrtieba; @Xpath(xpath={"//div[@id='u1']//a[@name='tj_login']", "//a[@name='tj_trnuomi']/parent::div/a[7]", "/html/body/div[3]/div[1]/div/div[3]/a[7]"}) @Frame(frame="") @Description(description="tjlogin") public Click tjlogin; @Xpath(xpath={"//div[@id='u1']//a[@name='tj_settingicon']", "//a[@name='tj_trnuomi']/parent::div/a[8]", "/html/body/div[3]/div[1]/div/div[3]/a[8]"}) @Frame(frame="") @Description(description="tjsettingicon") public Click tjsettingicon; @Xpath(xpath={"//a[@name='tj_briicon']", "//a[contains(text(),'更多产品')]", "//a[contains(@class,'bri')]"}) @Frame(frame="") @Description(description="tjbriicon") public Click tjbriicon; @Xpath(xpath={"//a[@name='tj_mp3']", "/html/body/div[3]/div[1]/div/div[4]/div/div[2]/div[1]/div/a[1]"}) @Frame(frame="") @Description(description="tjmp3") public Click tjmp3; @Xpath(xpath={"//a[@name='tj_img']", "/html/body/div[3]/div[1]/div/div[4]/div/div[2]/div[1]/div/a[2]"}) @Frame(frame="") @Description(description="tjimg") public Click tjimg; @Xpath(xpath={"//a[@name='tj_zhidao']", "/html/body/div[3]/div[1]/div/div[4]/div/div[2]/div[1]/div/a[3]"}) @Frame(frame="") @Description(description="tjzhidao") public Click tjzhidao; @Xpath(xpath={"//a[@name='tj_wenku']", "/html/body/div[3]/div[1]/div/div[4]/div/div[2]/div[1]/div/a[4]"}) @Frame(frame="") @Description(description="tjwenku") public Click tjwenku; @Xpath(xpath={"//a[@name='tj_bang']", "//a[contains(text(),'风云榜')]", "/html/body/div[3]/div[1]/div/div[4]/div/div[2]/div[1]/div/a[5]"}) @Frame(frame="") @Description(description="tjbang") public Click tjbang; @Xpath(xpath={"//a[@name='tj_tuiguang']", "//a[contains(text(),'百度推广')]", "/html/body/div[3]/div[1]/div/div[4]/div/div[2]/div[1]/div/a[6]"}) @Frame(frame="") @Description(description="tjtuiguang") public Click tjtuiguang; @Xpath(xpath={"//a[@name='tj_more']", "//a[contains(text(),'全部产品>')]", "/html/body/div[3]/div[1]/div/div[4]/div/div[2]/div[1]/div/div/a"}) @Frame(frame="") @Description(description="tjmore") public Click tjmore; @Xpath(xpath={"//a[@id='setf']", "//a[contains(@style,'display: inline;')]", "/html/body/div[3]/div[3]/div/div[2]/p[1]/a[2]"}) @Frame(frame="") @Description(description="setf") public Click setf; public baidu(BrowserEmulator be) { super(be); } }
总结
使用此插件,可以快速地完成控件的获取,以及bean层代码(根据8种不同控件类型,提供其特异的方法)的自动生成,几乎完全释放控件获取的工作量。
Web自动化框架LazyUI使用手册(4)--控件抓取工具Elements Extractor详解(批量抓取)的更多相关文章
- Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)
概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...
- Web自动化框架LazyUI使用手册(2)--先跑起来再说(第一个测试用例-百度搜索)
作者:cryanimal QQ:164166060 上篇文章中,简要介绍了LazyUI框架,本文便来演示,如何从无到有快速搭建基于lazyUI的工程,并成功运行第一个测试用例. 本文以百度搜索为例,选 ...
- Web自动化框架LazyUI使用手册(6)--8种控件对应的class,及可对其进行的操作
概述: 本文详述8种控件对应的class,及可对其进行的操作 回顾: 回顾一下,下文中的工具设计思路部分: http://blog.csdn.net/kaka1121/article/details/ ...
- Web自动化框架LazyUI使用手册(1)--框架简介
作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...
- Web自动化框架LazyUI使用手册(7)--浏览器常用操作API
LazyUI框架中,BrowserEmulator类提供了大量的浏览器操作,常用的API列举如下: 1. 基本操作 /** * Open the URL * 打开一个URL * @param ur ...
- Web自动化框架LazyUI使用手册(5)--模板工程:LazyUI-template详解
概述: LazyUI-template: 提供Maven管理的,基于Spring+Testng的,包含常用浏览器driver的,方便连接各种数据库的java模板工程,并提供以百度搜索为例的第一个测试用 ...
- Web自动化框架LazyUI使用手册(8)--excel数据驱动详解(ExcelDataProvider)
概述 框架提供了excel数据驱动方式运行测试用例的工具,本文将针对数据驱动,进行详细演示. 详见类:lazy.test.ui.browser.ExcelDataProvider 被测对象: http ...
- ActiveX控件打包、签名、嵌入详解
ActiveX控件打包.签名.嵌入详解 前言 在我们的一个项目中,使用到了大华网络监控摄像头枪机,网络上下载了其ActiveX插件,但是发现其所提供的类库没有打包处理.这就导致我们每次给用户安装的时候 ...
- C# 控件双缓冲控制 ControlStyles 枚举详解
ControlStyles 枚举 .NET Framework 4 指定控件的样式和行为. 此枚举有一个 FlagsAttribute 特性,通过该特性可使其成员值按位组合. 命名空间: Sy ...
随机推荐
- C# 传统四舍五入保留两位小数(网上流传好多错误的版本)
关于C#里面的Math.Round,很多人都会用到,而且以为是四舍五入,其实不是这样的: C#里面的Math.Round是符合IEEE标准的“四舍五入”,其实是五舍六入. 网上好多流传的下面这种方式实 ...
- java中lamda表达式的应用
lamda表达式主要是为了解决匿名内部类的繁琐过程 范例:简单的lamda表达式 此处使用匿名内部类 package com.java.demo; interface IMessage{ public ...
- PHP面向对象-看父类调用子类方法
大部分面向对象编程语言中,父类是不允许调用子类的方法的,但是PHP中可以 1.父类调用子类方法示例 class A { public function testa() { $this->test ...
- Css实现checkbox及radio样式自定义
前言 checkbox和radio样式自定义在网页中是很常见的, 比如在进行表单输入时性别的选择,用户注册时选择已阅读用户协议.随着用户对产品体验要求越来越高,我们都会对checkbox和radio重 ...
- [NOI 2010]能量采集
Description 题库链接 给你一个 \(n\times m\) 的坐标轴.对于坐标轴的每一个正整数整点 \((x,y)\) 其对答案产生的贡献为 \(2k+1\) ,其中 \(k\) 表示这个 ...
- 因数(factor)
一个最基本的算数法则就是大于1的整数都能用1个或多个素数相乘的形式表示出来.当然,有多种质因子排列方案 如: 10=2×5=5×2 20=5×2×2=2×5×2=2×2×5 用f(k)表示k的质 ...
- 2015 多校联赛 ——HDU5299(树删边)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission ...
- hdu 4630 查询[L,R]区间内任意两个数的最大公约数
No Pain No Game Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- bzoj1132[POI2008]Tro 计算几何
1132: [POI2008]Tro Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1722 Solved: 575[Submit][Status] ...
- C语言如何输出%
两个%即可,C语言中%有两个作用: 第一种是作为运算符,取余,例如:9%4=1(9/4=2--1). 第二种是转义符,比如在scanf()和printf()中的输入参数常出现带有%的表示参数类型的变量 ...