• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

在软件测试工具中WinRunner的问题整理集合

发布: 2010-7-15 13:21 | 作者: 网络转载 | 来源: 领测软件测试网采编 | 查看: 132次 | 进入软件测试论坛讨论

领测软件测试网

7.如何在winRunner中用Windows的API函数

  在使用该API函数前需要先加载该函数然后声明API函数,代码如下

load_dll("user32.dll");
extern int PostMessageA(in long, in long, in long, in long);
win_get_info("{class:window, MSW_class:AfxMDIFrame42, label:"!WinRunner.*"}", "handle", hWnd);
PostMessageA(hWnd, 16, 0, 0);

  请在尝试以上代码的时候,保存脚本,呵呵! 

  8.怎样处理跟踪键盘操作?

  答:下边的代码希望对你有帮助

  function GetKeyStatus(in vKey){ 
   auto pid, thread_id, win_desc, hWnd, KeyState, win_log_name, win_full_desc, focused_obj_desc;
   win_desc = "{active:1}";    
   if (win_exists(win_desc)==0)    {      
     win_get_desc(win_desc, "", "", "", win_full_desc);
        GUI_map_get_logical_name( win_full_desc, "", win_log_name, "bla");
       win_get_info(win_desc, "handle", hWnd);
        pid = GetWindowThreadProcessId(hWnd, NULL);
      thread_id=GetCurrentThreadId();
        AttachThreadInput(pid,thread_id,TRUE);
       KeyState=GetKeyState (vKey);
      AttachThreadInput(pid,thread_id,FALSE);
       if (KeyState < 0)        
       return(0); # Key is pressed
      else      
       return (1); # Key is not pressed    
    }
    else
        return (-1); # No active window found, so cannot determine key state
  }

9.WinRunner如何处理excel?

  答:其实解决方法有很多,这里列举两种。

  一.利用其他语言特性开发出dll提供给winrunner使用(vb,vc,delphi等)

  二.在其他环境中实现,用winrunner调用

  第一种我在这里不举例子了,第二种我利用vbs往excel中赋值给大家提供一种思路,代码如下:

'vbs中的代码
 Dim ExcelApp
 Dim itemX
 if WScript.Arguments.Count < 2 then
  r = msgbox("Requires 2 arguments", 48, "change_sheet")
 else
  dim fso
  set fso = createobject("scripting.filesystemobject")
  xlBook = fso.GetAbsolutePathName(WScript.Arguments(0))
  xlSheet = WScript.Arguments(1)
  set fso = Nothing
  Set ExcelApp = CreateObject("Excel.Application")
  ExcelApp.Workbooks.Open(xlBook)
  Set itemX = ExcelApp.ActiveWorkbook.Worksheets.Item(xlSheet)
  itemX.Activate  excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("A1").Select
  excelapp.ActiveCell.FormulaR1C1 = "1"
  excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("B1").Select
  excelapp.ActiveCell.FormulaR1C1 = "2"
  excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("c1").Select
  excelapp.ActiveCell.FormulaR1C1 = "3"
  ExcelApp.ActiveWorkbook.Save()
  ExcelApp.ActiveWorkbook.Close(1)
  ExcelApp.Quit()  Set itemX = Nothing
  Set ExcelApp = Nothing
end if

winrunner中的调用代码:dos_system("wscript "C:excel_sheet.vbs" "C:SheetBook.xls" "Sheet2""); 

  10.在WinRunner中如何实现得到transaction时间?

  答:一般情况下transaction的时间只能在最后结果中得到,如何在脚本得到这个时间呢,下边的代码可以帮助你:

public transactions[];
function start_my_transaction(in transaction_name)
{
    transactions[transaction_name] = get_time();
    tl_step("Start transaction: "" & transaction_name & """,PASS,"Timestamp: " &
transactions[transaction_name]);
    return (transactions[transaction_name]);
}
function end_my_transaction(in transaction_name)
{
    auto end_time = get_time();
    auto rc;
    if(transactions[transaction_name] == "")
    {
        tl_step("End transaction: "" & transaction_name & """,FAIL,"Transaction was
never started.");
        rc = -1;
    }
    else
        tl_step("End transaction: "" & transaction_name & """,PASS,"Elapsed Time: "
& (rc = end_time - transactions[transaction_name]));
    delete transactions[transaction_name];
    return rc;
}
start_my_transaction("my_transaction");
wait(2);
rc = end_my_transaction("my_transaction");
pause("Elapsed time = " & rc);

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网