51Testing软件测试论坛
标题:
如何从cb的第三方控件Tmemo中获取字符串(或文本内容)
[打印本页]
作者:
liuhuascanf
时间:
2007-7-10 19:16
标题:
如何从cb的第三方控件Tmemo中获取字符串(或文本内容)
获取tmemo这个控件中的内容我一直都没有搞定,通过了不同的方式
obj_get_text();
obj_get_info();
。。。。
见插图,灰色部分“资料校验:该号码不存在或者已被占用”,和窗体下面的白色部分的内容都是在tmemo控件中
请问这种控件该如何获取
或者有没有其他方式获取里面的值?
麻烦各位高人给个解答,不胜感谢!
插图见附件
[attach]28954[/attach]
作者:
liuhuascanf
时间:
2007-7-11 09:28
自己顶下先,怎么没人来回答呢?
这个问题对高手来说很难么?
作者:
dionysus
时间:
2007-7-11 11:44
lz先用gui spy查看一下这个弹出框的属性,感觉应该是win_get_text之类的函数可以
作者:
liuhuascanf
时间:
2007-7-11 14:46
{
class: object,
MSW_class: TMemo,
location: 0
}
昨天忘说了,是obj对象,靠win_get_text是取不出来的
作者:
lantianwei
时间:
2007-7-12 12:31
估计是取不出来了
作者:
liuhuascanf
时间:
2007-7-12 19:54
肯定有办法的,如果这些字符串都取不出来,mi顺带着hp一起公司关掉算了!
作者:
liuhuascanf
时间:
2007-7-14 00:56
小研究了下,自己写了个函数,通过把字符串读入记事本,把问题搞定了
1.定义一个test:a,目录 "D:\\wr\\a",
2.a中新增gui文件 a.gui,被learn的对象有"系统通知","记事本"的窗体
3.定义函数 tmemo_get_text(out text,guiFile),函数如下:
public function tmemo_get_text(out text,guiFile){
GUI_close_all();
GUI_load("D:\\wr\\a\\a.gui"); #Load the GUI file
if(win_exists("系统通知")==E_OK){
if(obj_exists("TMemo_1")==E_OK){
win_activate("系统通知");
set_window("系统通知");
obj_type ("TMemo_1","<kDown_E><kDown_E><kHome_E><kS_End_E><kCtrl_L-c>"); #仅需获取最后一行内容
invoke_application("notepad.exe","","C:\\WINDOWS\\system32\\",SW_SHOW);
win_activate ("无标题 - 记事本");
set_window ("无标题 - 记事本", 1);
obj_type ("Edit","<kCtrl_L-v>");
edit_get_text("Edit",text);
obj_type ("Edit","<kCtrl_L-z><kAlt_L-kF4>");
win_activate("系统通知");
set_window("系统通知");
}
else{
text="There's no such control named Tmemo_1 !";
report_msg(text);
}
}
else{
text="There's no such window which you need !";
report_msg(text);
}
GUI_close_all();
GUI_load(guiFile);
};
在b 的test中调用:
GUI_close_all();
GUI_file=getvar("testname")&"\\b.gui";
GUI_load(GUI_file);
call "d:\\wr\\a"();
win_activate("系统通知");
set_window("系统通知");
tmemo_get_text(text,GUI_file);
report_msg(text);
从而获取了tmemo中的字符串,欢迎各位高手帮忙改进函数实现方式,小弟是新手,目前只会用这种比较老土的方法
作者:
dionysus
时间:
2007-7-14 15:39
obj_type ("TMemo_1","<kDown_E><kDown_E><kHome_E><kS_End_E><kCtrl_L-c>"); #仅需获取最后一行内容
这一行前面部分的键盘操作是什么意思?后面是一个复制的快捷键
另:强烈支持lz的这种自我解决问题的方法,自己编写函数以适应产品特性,加精!
作者:
liuhuascanf
时间:
2007-7-14 20:45
哈哈哈,难得发一篇帖子就拿了精华,激动ing!感谢版主!
obj_type ("TMemo_1","<kDown_E><kDown_E><kHome_E><kS_End_E><kCtrl_L-c>");
这一行代码主要是针对我们自己的产品设计的,就我们的产品中,TMemo_1内部的提示信息有且只有3行
<kDown_E><kDown_E>表示将光标定位到TMemo_1上时候,将光标再往下移动2行,以保证取到的值肯定是最后一行
<kHome_E>表示将光标定位到行首home键,<kS_End_E>就是shift+end键,这两个键组合就是把这一行内容全部取到,最后复制下就ok了!
hoho,再次感谢版主,我想以后会有更多的精华贴出现的
sdlkfj5
作者:
lantianwei
时间:
2007-7-16 09:14
学习了。。。。佩服
作者:
kolecat
时间:
2007-7-16 11:23
想法挺新颖,不错
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2