再谈Selenium测试之精要

最近在使用Selenium做ExtJs的测试的时候,有一些问题值得总结和反省下。

背景:
目前一个版本的功能使用ExtJs+Hibernate+Spring进行编写。ExtJs使用Ext Designer进行编写进行自动化功能测试:选用Selenium

在进行selenium录制的时候,会出现一些ID是变得的。因此在经过和编程人员的协商后,决定在Ext Designer编写ExtJs的时候设置好ID。因此基本上所有发布的ExtJs源码是有固定的ID的。

经过反复的selenium录制和使用firefox的Firebugs插件的定位。得出以下结论。Ext Designer生成的ExtJs代码中的一些控件,其实是包含在一些table或者div里面的。因此更为精确的定位该控件可以使用Xpath来进行。比如:
//table[@id=''] or //input[@id=''] 

然后用selenium.type()方法或者selenium.select()方法或者selenium.click()。这三个方法是最基本的。也是最容易记住和使用的。但是更为好的个人感觉就是使用selenium.runScript();关于这个方法看下封装:

public String selectComboRow(String comboId, String comboValue) {

return "var combo = Ext.getCmp('" + comboId + "'); combo.setValue('" + comboValue + "'); combo.fireEvent('select');";

}

public String typeTextField(String fieldId, String fieldValue) {

return "var textf = Ext.getCmp('" + fieldId + "'); textf.setValue('" + fieldValue + "'); textf.fireEvent('blur');";

}

public String buttonClick(String buttonId) {

return "Ext.getCmp('" + buttonId + "').fireEvent('click')";

}

这样在对录制ExtJs的CheckboxSelectionModel的时候就可以使用selectComboRow方法啦。

最后要注意的是关于Selenium的keyDown,keyPressNative等事件

selenium.focus("控件的ID");
selenium.type("控件ID", "填入的值");
selenium.keyDown("控件ID", "\\40");//模拟按下列
Thread.sleep(1000);
selenium.keyPressNative(String.valueOf(KeyEvent.VK_ENTER));//,模拟按enter键

以上代码用于有下列框数据或者要通过输入的值,进行搜索得到相应的信息的时候。
步骤:先获取该控件的焦点---在该控件中输入值----按下拉框的数据---按enter确认。
注意Thread.sleep()这个方法是用来等待输入值到搜索得出值的时间。如果没有该方法。那么可能你的enter键按太快。而得不到你要等待的数据。

以上是一些未经过整理的记录。方便以后的记忆和学习。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值