WR相关技术问题请教(请各位大虾指教)
1、假如一个页面上有很多的EDIT输入框,每次跳转到这个页面的时候,光标会停留在哪个EIDT框是随机的,那么我如何判断光标停留的地方呢?2、对于3层以上的脚本调用,如何调处最底层的脚本呢?例如以下脚本:
main:
call A();
call B();
A:
call C();
call D();
D:
call E();
call F();
那么,如果我想在执行E的过程中,如果遇到异常就跳出来,接着执行F,如何处理?
如果我想在执行E的过程中,遇到异常就跳出来,再执行C,如何处理?
如果我想在执行E的过程中,遇到异常就跳出来,再执行B,如何处理?
如果我想在执行E的过程中,遇到异常就跳出来,结束整个脚本的运行,如何处理?
3、在使用有关wait_info的函数的时候,有时会出现PC机器和被测系统全部无响应,CPU占用100%的情况,不知道什么原因?
4、在测试中,如果有多个地方会因为出现异常而需要退出该脚本的执行,但是没种异常出现的方式及判断标准又是不一样的,如果把每种情况都写进脚本的话,那将会导致脚本非常复杂,请问对于这种情况,有什么好的处理方式? 试回答下:
1. 自己写个DLL来找吧, 给些参考(VC下):
HWND hWnd = ::FindWindow(NULL, "Your Dlg Title"); // 找到窗口, 第二个参数为标题
CWnd* pWnd = FromHandle(hWnd);
CWnd* pCurWnd = pWnd->GetFocus(); // 获取当前的焦点所在的控件
return pCurWnd->GetSafeHWnd(); // 返回句柄. GUI属性中有个handle就是指这个句柄, 应该可以用get_win_info来获取到, 比较一下就知道是哪个了(一般情况下程序每次运行各个控件的句柄是会变的)
2. 在脚本中使用treturn 退出正在执行的脚本(默认返回空), 并返回到调用它的脚本
脚本这样写应该可以完成2所要求的倒数第二种: 执行B:
E脚本:
report_msg("test1: 1");
if (有异常)
treturn "exceptionE";
report_msg("test1: 2");
C脚本:
....
rc = call E();
if (rc == "exceptionE")
treturn "exceptionC";
...
A脚本:
...
rc = call C();
if (rc == "exceptionC")
treturn "exceptionA";
...
main脚本不用特殊处理. 因为A已经返回, 其它级别的类推.
最后一个比较简单: texit 是直接退出的. 不会再执行
3.应该是你的被测系统已经无法响应wait_info所发出的某种消息, WR就一直等. 只能强行结束WR
4. 你所指的异常是指什么? Memory leak? Runtime Error? 这种异常好像WR处理不了(出错对话框都抓不到) 感谢FISH兄!
对于第1个问题:我不会写DLL,所以你的那些代码我看不懂,有没有关于写DLL的相关文档啊?
其他问题对我很有帮助,非常感谢! 对于第一个问题,可使用函数obj_highlight,数组,一个循环语句就可以。可能比较花运行时间 第一个问题可以用一个比较苯的方法,就是把所有的edit逐一用edit_check_info("edit_name","focused",1)来检查!
页:
[1]