最近在使用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来进行。比如:
然后用selenium.type()方法或者selenium.select()方法或者selenium.click()。这三个方法是最基本的。也是最容易记住和使用的。但是更为好的个人感觉就是使用selenium.runScript();关于这个方法看下封装:
这样在对录制ExtJs的CheckboxSelectionModel的时候就可以使用selectComboRow方法啦。
最后要注意的是关于Selenium的keyDown,keyPressNative等事件
以上代码用于有下列框数据或者要通过输入的值,进行搜索得到相应的信息的时候。
步骤:先获取该控件的焦点---在该控件中输入值----按下拉框的数据---按enter确认。
注意Thread.sleep()这个方法是用来等待输入值到搜索得出值的时间。如果没有该方法。那么可能你的enter键按太快。而得不到你要等待的数据。
以上是一些未经过整理的记录。方便以后的记忆和学习。。
背景:
目前一个版本的功能使用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键按太快。而得不到你要等待的数据。
以上是一些未经过整理的记录。方便以后的记忆和学习。。