本文章转载于搜狗测试
平时的测试工作中,小伙伴们有时会遇到重复做一些操作的场景,比如反复点击某个按钮,验证被测程序不会异常;或者反复最大化最小化被测程序,看看有没有显示异常…
这样的操作往往都比较简单,但是重复操作既浪费时间又耗费人力,怎么办呢?
使用自动化工具!
但是市面上的自动化工具体积往往都非常庞大,而且必须编写相应的脚本来做,面对以上简单的自动化需求来说,有点“拿着大炮打蚊子”了。
本次分享,小编将介绍搜狗同学自己做的一款简单的鼠标录制回放工具。
PS:感兴趣的各位读者也可以去Git上下载源码进行修改。
程序下载地址:
http://url.cn/XTXmSC
源码下载地址:
https://github.com/sogou/Test-ClickPrograme.git
源码解读:
本次小编介绍的工具中有两个关键函数,一个是录制函数;一个是回放函数。
录制函数:(通过鼠标位置进行相应坐标点转换,同时加入动作队列)
intCClickProgrameDlg::RecordAction()
{
if(m_iRecordState== 0)
{//起始位置
m_iRecordState= 1;
CPointCurPoint;
GetCursorPos( &CurPoint);
//ScreenToClient( &CurPoint );
m_tagEventRecord.m_tagMouseEvent.m_StartPoint=CurPoint;
//m_hCurs = LoadCursor(NULL, IDC_CROSS ); // Create a standard hourglass cursor.
//SetCursor(m_hCurs);
}
else
{//终止位置
m_iRecordState= 0;
CPointCurPoint;
GetCursorPos( &CurPoint);
//ScreenToClient( &CurPoint );
m_tagEventRecord.m_tagMouseEvent.m_EndPoint=CurPoint;
tagActionEvent*pNewEvent;
pNewEvent=newtagActionEvent;
pNewEvent->m_iEventType=ACTIONTYPE_MOUSE;//_T("鼠标动作");
pNewEvent->m_tagMouseEvent.m_StartPoint=m_tagEventRecord.m_tagMouseEvent.m_StartPoint;
pNewEvent->m_tagMouseEvent.m_EndPoint = m_tagEventRecord.m_tagMouseEvent.m_EndPoint;
pNewEvent->m_tagMouseEvent.m_iActionType = MOUSE_RIGHT_MOVE;
pNewEvent->m_iSleepTime= DefaultSleepTime;
pNewEvent->m_iLoopTime= DefaultLoopTime;
InsertAction( pNewEvent);
//DestroyCursor( m_hCurs );
}
return1;
}
回放函数:(将队列中的动作拿出来执行鼠标点击操作)
intCClickProgrameDlg::SingleClick(tagActionEvent*pNewEvent)
{
if(pNewEvent==NULL)
{
return0;
}
for(inti= 0 ;im_iLoopTime;i++ )
{
SetCursorPos(pNewEvent->m_tagMouseEvent.m_StartPoint.x,pNewEvent->m_tagMouseEvent.m_StartPoint.y);
if(pNewEvent->m_tagMouseEvent.m_iActionType&MOUSE_MASK_LEFT)
{//左键
mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP, 0 , 0 , 0 , 0 );
}
else
{
mouse_event(MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP, 0 , 0 , 0 , 0 );
}
Sleep(pNewEvent->m_iSleepTime);
PeepMessage();
if(m_eState!=Run)
{
break;
}
}
return1;
}
工具使用方法:
示例:小编接到一个测试任务:重现搜狗浏览器反复切换标签页假死的问题,为了节省人力,小编进行了如下工作:
1.在需要增加点击的地方按下shift + A。依次类推,添加多个点击点。
2.在程序界面上配置要点击的次数、间隔时间和循环次数。
3.按下shift+R运行点击脚本。
4.如果希望立即停止已配置的点击工作,可以按下shift+S。
具体实现的效果: