概述

前面的一篇博文详细介绍了单个控件抓取的设计思路&逻辑以及使用方法,本文将详述批量控件抓取功能。

批量抓取:打开一个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详解(批量抓取)相关推荐

  1. ActiveX控件打包、签名、嵌入详解

    ActiveX控件打包.签名.嵌入详解 前言 在我们的一个项目中,使用到了大华网络监控摄像头枪机,网络上下载了其ActiveX插件,但是发现其所提供的类库没有打包处理.这就导致我们每次给用户安装的时候 ...

  2. python 窗口控件变大变小_详解:用Python+AutoIt实现界面工具开发过程

    前言: 今天为大家带来的内容是,详解:Python+AutoIt实现界面工具开发过程!(部分代码用图片方式呈现出来,方便各位观看与收藏) AutoIt简述 AutoIt一个使用类似BASIC脚本语言的 ...

  3. C# 控件双缓冲控制 ControlStyles 枚举详解

    ControlStyles 枚举 .NET Framework 4   指定控件的样式和行为. 此枚举有一个 FlagsAttribute 特性,通过该特性可使其成员值按位组合. 命名空间:  Sys ...

  4. Android控件知识点-RecyclerView(全网最详解)

    背景:笔者在开发Android 蓝牙通信,需要搜索蓝牙设备并且动态显示,这个时候就需要选取适合的相关视图控件了,最后兜兜转转还是觉得RecyclerView好用一些,本人也是在开发的过程中,搜索了很多 ...

  5. vb mysql加载控件_VB如何连接ACCESS数据库详解

    首先有一点要注意,数据库的使用与我们以往所使用的文本文件不同.例如我们使用文本文件,来记录各种有用的数据.那么大致有以下几步: 读取文件 -- 格式化数据 -- 关闭文件 -- 使用数据 如果数据量较 ...

  6. html中字段是日期控件,jQuery日历插件datepicker用法详解

    jQuery是一款不可多得的非常优秀的javascript脚本开发库,而基于其上的很多插件也是非常规范和卓越的,如果错过这番美景真是太可惜了,比如datepicker这个插件. 一般MIS系统的前端, ...

  7. python 自动化框架_学会Python+Selenium,分分钟搭建Web自动化框架!

    用python+selenium实现UI自动化测试,要有一些HTML和xpth的基础,当然python基础一定是必须要会的.笔者建议花点时间了解下相关基础知识,不至于后面发懵. 一.什么是seleni ...

  8. 自动化用例设计原则+web自动化框架

    自动化用例设计原则 web自动化框架 PO模式就是页面对象和测试用例的分离. PageObjects放页面对象,封装元素定位和元素操作(也可以单独把元素定位放到PageLocators层) basep ...

  9. Web开发中的弹出对话框控件介绍

    Web开发中,目前由于Jquery的大行其道,因此很多弹出对话框,都用到了Jquery技术,反而原始的弹出对话框的方式较为少用了.不过基于JQuery的方式实现对话框窗口弹出,也有很多控件可以利用,由 ...

  10. Web协议详解与抓包实战之HTTP1.1 学习笔记【一】

    Web协议详解与抓包实战之HTTP1.1[一] 前言 <Web协议详解与抓包实战>课程学习,陶辉老师主讲 学习内容: HTTP–TLS/SSL–TCP/IP自上而下根据应用学习web协议H ...

最新文章

  1. Cell Reports:黄梓芮等揭示大脑皮层中通往意识的“大门”
  2. HTML Add-on HTML 查看器/编辑器查看器
  3. 哪里可以接到python的活干-越忙越穷?赶紧把瞎忙活的事情交给Python吧!
  4. 51nod 1138 连续整数的和(数学公式)
  5. (转载)MyCat:开源分布式数据库中间件
  6. 使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践--转载
  7. Python 爬虫开发:Ajax请求响应json案例
  8. 2020 ICPC 济南 F. Gcd Product
  9. java 发送邮件_Jenkins实现自动化邮件发送踩坑记录
  10. C#属性的声明和使用演示源码片段
  11. 排队接水(洛谷-P1223)
  12. 2016年北京hadoop in china见闻
  13. pl/sql developer安装配置
  14. L1-026 I Love GPLT (5 分)—团体程序设计天梯赛
  15. Auto Highlight for Mac(Safari文本自动高亮插件)
  16. 伴你装系统系列(上篇):Windows10
  17. 数据库 求闭包、求候选码、范式转换、最小依赖集、无损分解及保持函数依赖
  18. 网络技术学习:虚拟专用网络
  19. Transformer+异常检测论文解读
  20. 先搞清楚这些问题,简历上再写你熟悉Java!

热门文章

  1. 香橙派上手记录(orangepi pc)
  2. webpack梳理之常用loader(一)
  3. ubuntu安装安卓开发环境(android studio)
  4. NiFi 1.16.3 生产使用的更新及BUG。
  5. DELL PERC-10和 PERC-9阵列卡支持的操作系统版本
  6. Chrome插件开发教程
  7. android当无线鼠标代码,如何将安卓手机变身为无线鼠标
  8. 国人创造中文编程语言的优势
  9. 计算机磁盘文件怎么加密,怎么加密磁盘-文件夹加密超级大师加密磁盘的方法 - 河东软件园...
  10. mysql删除视图sql语句_删除视图的sql语句是什么