RandyTsai 发表于 2006-5-23 18:04:15

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、在测试中,如果有多个地方会因为出现异常而需要退出该脚本的执行,但是没种异常出现的方式及判断标准又是不一样的,如果把每种情况都写进脚本的话,那将会导致脚本非常复杂,请问对于这种情况,有什么好的处理方式?

shyfish 发表于 2006-5-23 19:37:33

试回答下:

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处理不了(出错对话框都抓不到)

RandyTsai 发表于 2006-5-29 08:41:04

感谢FISH兄!
对于第1个问题:我不会写DLL,所以你的那些代码我看不懂,有没有关于写DLL的相关文档啊?
其他问题对我很有帮助,非常感谢!

lzq123335 发表于 2006-5-30 16:09:06

对于第一个问题,可使用函数obj_highlight,数组,一个循环语句就可以。可能比较花运行时间

重新开赌 发表于 2006-5-30 17:55:30

第一个问题可以用一个比较苯的方法,就是把所有的edit逐一用edit_check_info("edit_name","focused",1)来检查!
页: [1]
查看完整版本: WR相关技术问题请教(请各位大虾指教)