Holmos自动化测试入门学习(二)-------页面元素定位

来源:互联网 发布:thinkpad怎么样知乎 编辑:程序博客网 时间:2024/06/07 06:28
学过WebDriver的同学一定知道页面元素的定位是WebDriver框架的核心内容,在Holmos一样页面元素的定位也 
非常的重要。
Holmos跟WebDriver有个很大的区别就是Holmos把页面元素的定位和业务流程操作分开,大幅度降低了代码维护的成本。
Holmos 团队的旭日云海,还针对Holmos页面元素定位的方式开发了个火狐的插件,可以快速自动的定位出整个页面元素的定位,
并可以在基本不做修改情况下直接使用。由于还没具体看到这火狐插件,这边就不说具体使用,默默等待ing....

在具体介绍定位方法之前,先简单介绍下Holmos中主要的元素类型


Holmos-webTest主要元素类型如下:
  • Button  按钮       
  • CheckBox  勾选框                          
  • Combobox  下了框                      
  • Image  图片                                     
  • Label  标签                                        
  • Link  链接                                                                
  • RadioButton  单选框                         
  • RichTextField  长文本框/富文本框                     
  • Table  表                                            
  • TextField  文本框                              

了解了页面的基本元素类型后,我们开始正式看看页面元素定位的方法。
Holmos 框架页面元素定位有9种方式:

  • addIDLocator  --------------根据ID属性值定位,速度快,准确率高,而且基本是唯一
  • addNameLocator--------------根据Name属性定位
  • addClassLocator-------------根据Class属性值定位
  • addCSSLocator---------------根据CSS路径定位,一般用浏览器默认的CSS查找引擎,如果没有就用Sizzle作为查找引擎(例如IE6,7)
  • addLinkTextLocator----------根据标签之间的Text值定位,如<a>Text</a>
  • addPartialLinkTextLocator---根据部分文本值定位
  • addTagNameLocator-----------根据dom节点的节点名来定位 如<a></a>节点名为a
  • addXpathLocator-------------根据Xpath路径来定位
  • addAttributeLocator---------根据dom节点中某一个属性和对应的属性值来定位

同样Holmos 支持多维方式定位,就是你一个页面元素可以同时用上面1种或多种方式去定位,只要一种方式成功便成功定位。

以下以百度首页为具体例子:
1.首先新建个百度Page类,类名就叫Baidu,并继承Page类,代码示例
import com.holmos.webtest.element.Button;import com.holmos.webtest.element.Image;import com.holmos.webtest.element.Link;import com.holmos.webtest.element.TextField;import com.holmos.webtest.struct.Page;public class Baidu extends Page {        // 构造个方法,元素定位页面的固定学法        public Baidu() {               super();               this.comment = "百度首页";// 页面注释               this.init();// 页面元素收集       }               // 实例化个图片元素 百度LOGO        public Image logo =new Image( "百度logo" );       {               logo.addXpathLocator(".//*[@id='lg']/img" );// 这里采用Xpath方式定位       }               // 实例化一个链接元素 登陆标签        public Link loginLink =new Link( "登录标签" );       {               loginLink.addLinkTextLocator("登录" );// 这里使用标签之间的Text值定位       }               // 实例化一个文本框元素 搜索输入框        public TextField input =new TextField( "搜索输入框" );       {               input.addIDLocator("kw" );// 这里使用ID值定位       }               // 实例化一个文本框元素 搜索输入框,并多维定位        public Button search =new Button( "百度一下" );       {               search.addIDLocator("su" );// 这里使用ID值定位               search.addXpathLocator("html/body/div[1]/div[1]/div[2]/div/form/span[2]/input" );//采用Xpath绝对值定位       }}



2.页面元素定位完成,对页面元素进行操作,验证是否定位准确。
   新建个测试类,类名我们就取Baidu_Test,具体代码如下:
import org.junit.Test;import com.holmos.webtest.EngineType;import com.holmos.webtest.utils.HolmosWindow;public class Baidu_Test {        public Baidu baidu =new Baidu();        /**        *1.在搜索框输入: Holmos        *2.点击百度一下,进行搜索        */        @Test        public void search(){              HolmosWindow. openNewWindow(EngineType.WebDriverChrome, "http://www.baidu.com" );// 打开百度页面               baidu.input .setText("Holmos"); // 搜索框输入: Holmos。  setText()为文本框传值的方法               baidu.search .click();// 点击百度一下,进行搜索。   click()是鼠标点击操作              HolmosWindow. closeAllWindows();// 关闭结束测试       }        /**        * 获取百度LOGO图片的标签中URL属性的值,并打印        */        @Test        public void getIMGURL(){              HolmosWindow. openNewWindow(EngineType.WebDriverChrome, "http://www.baidu.com" );// 打开百度页面              System. out.println(baidu .logo.getAttribute( "src"));//getAttribute()方法就是获取某个元素某个属性的值              HolmosWindow. closeAllWindows();// 关闭结束测试       }}


执行结果:
控制台输出可以看到;



最后介绍个在页面元素中定位非常好用的火狐浏览器插件叫:FirePath。安装完后在FireBug中就可以看到。
下面1 2 3个鼠标点击步骤便可以查看到你要定位元素的Xpath地址。


原创粉丝点击