Selenium UI-Element Reference
基于selenium2.9.1
在使用selenium IDE的时候我一直是有一个疑问的:测试代码怎么复用?UI-Element在一定程度上解决了这个问题。
UI-Element 应属PageObject设计模式的具体实现的一种,它将待测页面的对象和测试用例(测试逻辑)进行分离,可减少UI自动化测试过程中频繁修改测试代码的问题。
它有如下几个特点:
1. 除去测试代码的冗余,增加代码重用性,减少写测试代码的时间;
1. JSON入门,JS代码编写,方便非开发者写测试用例(JS代码简单易学资料足);
2. IDE和core/TestRunner、RC、Grid都可以使用这些定义好的文件(我使用的开发模式是:python/java+selenium webdriver),不做白功夫而且能起到很好的过渡作用;
3. 用rollup来打包Selenium命令集合,将执行细节从测试步骤中剥离出来,使测试者更注重用例的逻辑;
4. 提供简单的动态改变locator和rollup的行为的方式,提高代码重用性。
原文档获取方式
- firefox selenium ide如图点击即可获取
- 安装了selenium IDE插件的前提下,firefox浏览器中打开此链接:chrome://selenium-ide/content/selenium-core/scripts/ui-doc.html
- selenium官网
UI-Element Reference
整个UI-Element参考文档就说明了一件事情:如何去写map.js文件。
此文件名字可以自定义,文中UI-Map文件、ui-map.js、map.js、map均指此文件
map.js文件可以为Selenium完成两件事:1)定义Selenium可以识别的被测网页及元素;2)语句打包(rollup)。
Selenium的PageObject设计的概念体现在两个部分:UI-Element和UI-Map两部分。Element主要作用是处理JSON语句,简化UI-Map文件的编写;UI-Map文件中定义一系列的JSON对象,来对应被测网页和网页元素。现目前Selenium IDE是自带ui-element.js文件,用户只需要定义ui-map.js的部分即可。
如何在firefox中调试自定义JS代码请查看:http://blog.csdn.net/wangxinyao318/article/details/53925275
术语
- Page :[中]页面,用一个独有的URL来表示,通过URL就可以访问到对应的页面。上面有页面元素。也指DOM document对象。
- Page element:[中]页面元素,在真实网页上的元素,任何用户有可能进行交互行为的元素。这里也指DOM对象。
- Pageset:[中]页面集合,有共同元素的页面集合。一个页面可以属于多个页面集合,一个UI元素可以属于多个页面集合。可用正则表达式来表达集合概念。可为集合本身单独命名。
- UI element:[中]UI元素,页面元素所映射/map的对象。UI元素通过selenium意义上的locator来定位。UI元素属于页面集合。
- UI 参数:属于UI element的一部分,一般在locator中使用,用来动态变更定位到的UI元素。举例:相似网页元素出现在同一个页面时,这时候你可以只定义一个UI element, 然后再通过UI 参数比如 index,那么现在就可以通过改变index的值来达到动态定位网页元素的目的。这时,UI element的代码就复用了~
- UI map:[中]UI映射,
页面元素
对应UI元素
的映射集合。UI元素在map.js文件中定义,ui-element.js文件将其映射为页面元素/DOM对象。 - UI specifier string:指定UI元素的字符串,字符串包含页面集合名称、UI元素名称、UI参数的文本。举例:ui=xxxpage::xxxelement(xxxargs=???)
- Rollup rule:它规定了将一个或者多个seleniumIDE命令组合成单个命令的规则。在命令执行时,将单个rollup命令按自定义规则将其扩展成多个IDE命令。
- rollup参数:通过它改变rollup命令扩展方式。
- Command matcher:[中]命令匹配器,它通过匹配expanded command来选择性地改变rollup参数,进而改变rollup所要展开的命令。一个rollup一般会有一个或多个命令匹配器。
为啥要用UI Element
用了这个之后命令就可以这样写:
简洁,复用,将定位信息包裹在元素中。用例只在乎操作和语义。
语法
示例文件:firefox