请问RFT怎么去识别一个弹出的对话框是否存在?
一个案例,其中有一个界面会随机弹出一个对话框,请问我用RFT怎么去识别这个对话框是否存在或是不存在如何返回一个NULL或其它可以识别的值? :( ,有人回答我吗? 可以用一个while循环来判断。首先这个对话框应该有一个我们可以进行识别的属性。在识别时我们需要实现如下需求,如果对话框存在,则返回true;如果不存在则等待5秒,如果在5秒内能等待到这个对象,则返回true,否则返回false。我们创建方法public boolean isDialogExists(String id,string value)来实现,其中id和value 是我们用来识别对话框的属性
该方法的实现应该类似于如下代码:
public boolean isDialogExists(String id,String value){
boolean flag = false;
int time = 0;
while(!flag && time < 5){
RootTestObject root = getRootTestObject();
TestObject[] to = root.find(atDescendant(id, value));
if(to.length != 0){
flag = true;
}else{
sleep(1);
time++;
}
}
return flag;
} 楼上的代码和RFT本身的wait实现差不多,那个实现略完整。 我用下面的方法根本找不到对象,请问这是为什么啊?每次返回的长度都是0,所以dreamever给我的代码我根本没办法用
RootTestObject root = getRootTestObject();
TestObject[] to = root.find(atDescendant ("name", "筛选数据失败,请稍后再试或重新登入程序再试!"));
System.out.println (to.length);
http://img.photo.163.com/mSrkxfv9aBHSjWUCh_B3Mw==/1966384187301032973.jpg
http://img.photo.163.com/z55ssjWd92jHoidM8jJvDg==/1966384187301032955.jpg
请问这个问题怎么解决啊?有人帮助我吗? 来人啊!!!!求助啊!版主帮忙想办法啊 查看http://www.ibm.com/developerworks/cn/rational/r-cn-extendsrftobj/?S_TACT=105AGX52&S_CMP=NL&ca=dnl-cn-03052008
/ 打开窗体
//返回windows系统中顶层窗口的对象, gettopwindows(打开),返回打开窗口
//topwindows可以执行inputchars()方法
public IWindow getTopWindow(String objName){
IWindow[] wins = RationalTestScript.getTopWindows();// 返回windows对象数组
int length=wins.length;//获取长度
for(int i=0;i<length;i++){
if(wins.getText().matches(objName)){//标题
return wins;
}
}
return null;
}
// 返回打开按钮
public IWindow getLevelWindow(String topWinName, String levelWinName) {
IWindow winobjects = null;
IWindow[] wins=RationalTestScript.getTopWindows();// 返回windows对象数组
for (int i = 0; i < wins.length; i++) {// 在数组中查找所有符合topWinName属性的对象
if (wins.getText().equals(topWinName)) {
winobjects = wins;
}
}
IWindow[] winobj = winobjects.getChildren(); //识别打开按钮
for (int i = 0; i < winobj.length; i++) {
if (winobj.getText().equals(levelWinName)) {// 在顶层对象中,查找符合levelName属性的对象
return winobj;
}
}
return null;
}
放到TASKS里面的
//打开文件对话框
public void setopen(String fo){
a.getHtml_theFile().click(atPoint(164,6));//路径
IWindow n=a.getTopWindow("选择文件");
//必须判断
if(n!=null){
IWindow m=a.getLevelWindow("选择文件","打开(&O)");//返回按钮
if(m!=null){
a.getLevelWindow("选择文件", "文件名(&N):").click();//点击文件保存文本框,获取焦点.
a.getTopWindow("选择文件").inputChars(fo);
m.click();
}
}
}
//取消
public void clo(){
a.getHtml_theFile().click(atPoint(164,6));//路径
IWindow n=a.getTopWindow("选择文件");
//必须判断
if(n!=null){
IWindow m=a.getLevelWindow("选择文件","取消");//返回按钮
if(m!=null){
m.click();
}
}
} RootTestObject root = getRootTestObject();
TestObject[] to = root.find(atDescendant ("name", "筛选数据失败,请稍后再试或重新登入程序再试!"));
System.out.println (to.length);
属性名前要加上句号,在一个你这段汉字文字标点有问题,中间用英文的逗号,最后用了汉字的感叹号。这个值你最好到map里面copy一下。
RootTestObject root = getRootTestObject();
TestObject[] to = root.find(atDescendant (".name", "筛选数据失败,请稍后再试或重新登入程序再试!"));
System.out.println (to.length);
回复 9# 的帖子
billwf120 ,你好,谢谢你提供方法,但你的方法我都试过了,而且我的那段文字是从属性里COPY过来的!所以我才不解 苍天啊,大地啊!问题解决了,原来我装了一个RFT8.0版本,这段代码运行不成功,换成7.0.1就好了,呵呵,谢谢大家!:)回复 11# 的帖子
7.0.1也有些问题,比如我写在这里的: http://bbs.51testing.com/thread-129221-1-1.html换成7.0就没问题了:(
页:
[1]