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

学过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地址。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值