概述

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

批量抓取:打开一个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. Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)

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

  2. Web自动化框架LazyUI使用手册(2)--先跑起来再说(第一个测试用例-百度搜索)

    作者:cryanimal QQ:164166060 上篇文章中,简要介绍了LazyUI框架,本文便来演示,如何从无到有快速搭建基于lazyUI的工程,并成功运行第一个测试用例. 本文以百度搜索为例,选 ...

  3. Web自动化框架LazyUI使用手册(6)--8种控件对应的class,及可对其进行的操作

    概述: 本文详述8种控件对应的class,及可对其进行的操作 回顾: 回顾一下,下文中的工具设计思路部分: http://blog.csdn.net/kaka1121/article/details/ ...

  4. Web自动化框架LazyUI使用手册(1)--框架简介

    作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...

  5. Web自动化框架LazyUI使用手册(7)--浏览器常用操作API

      LazyUI框架中,BrowserEmulator类提供了大量的浏览器操作,常用的API列举如下: 1. 基本操作 /** * Open the URL * 打开一个URL * @param ur ...

  6. Web自动化框架LazyUI使用手册(5)--模板工程:LazyUI-template详解

    概述: LazyUI-template: 提供Maven管理的,基于Spring+Testng的,包含常用浏览器driver的,方便连接各种数据库的java模板工程,并提供以百度搜索为例的第一个测试用 ...

  7. Web自动化框架LazyUI使用手册(8)--excel数据驱动详解(ExcelDataProvider)

    概述 框架提供了excel数据驱动方式运行测试用例的工具,本文将针对数据驱动,进行详细演示. 详见类:lazy.test.ui.browser.ExcelDataProvider 被测对象: http ...

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

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

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

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

随机推荐

  1. pwd

    显示当前在文件系统里的确切位置 注: 系统根目录是/ 用户主目录是/home/用户名 对于root用户,用户主目录为/root

  2. [IOI 2011]ricehub

    Description 乡间有一条笔直而长的路称为“米道”.沿着这条米道上 R 块稻田,每块稻田的坐标均为一个 1 到 L 之间(含 1 和 L)的整数.这些稻田按照坐标以不减的顺序给出,即对于 0 ...

  3. bzoj 2436: [Noi2011]Noi嘉年华

    Description NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不同的地点举办.每个嘉年华可能包含很多个活动, ...

  4. hdu 5011(博弈)

    题意:在许多堆石子中,两人轮流取,1.在一堆中取至少一个  2.将这一堆分成两堆 思路:NIM游戏,所有值的异或,当其为0时失败 nim游戏: 假设只有两堆,游戏人取得胜利并不在于N1和N2的值具体是 ...

  5. Codeforces Round #401 (Div. 2)

    和FallDream dalao一起从学长那借了个小号打Div2,他切ABE我做CD,我这里就写下CD题解,剩下的戳这里 AC:All Rank:33 小号Rating:1539+217->17 ...

  6. hdu 5438(拓扑+bfs)

    题意:建图,删掉所有连接点小于2的点,直到不能删为止,问最后剩余的联通块中,点的数量是奇数的联通块中的点的权值和. 思路:拓扑删点,bfs计算 #include <iostream> #i ...

  7. hdu 5430(几何)

    题意:求光在圆内反射n次后第一次返回原点的方案数 如果k和n-1可约分,则表明是循环多次反射方案才返回原点. #include <iostream> #include <cstrin ...

  8. Python开发——排队问题随机模拟分析

    案例:主要是基于"蒙特卡罗思想",求解排队等待时间问题 场景:厕所排队问题 1.两场电影结束时间相隔较长,互不影响: 2.每场电影结束之后会有20个人想上厕所: 3.这20个人会在 ...

  9. # electron-vue 尝试做个网易云音乐

    当跑起来electron第一刻 我发现这个浏览器头是不是有点丑 是不是可以隐藏起来呢,答案当然是可以的 src/main/index.js mainWindow = new BrowserWindow ...

  10. ubuntu查看IO

    在命令行直接 cp 一个比较大的文件时,由于没有提示信息,总感觉很不放心,可以通过查看IO的方式确认cp操作的进展程度. 查看IO可以使用iostat命令,但是前提是要安装sysstat sudo a ...