本文章轉(zhuǎn)載于搜狗測(cè)試
平時(shí)的測(cè)試工作中,小伙伴們有時(shí)會(huì)遇到重復(fù)做一些操作的場(chǎng)景帮寻,比如反復(fù)點(diǎn)擊某個(gè)按鈕赠摇,驗(yàn)證被測(cè)程序不會(huì)異常;或者反復(fù)最大化最小化被測(cè)程序藕帜,看看有沒有顯示異常…
這樣的操作往往都比較簡單洽故,但是重復(fù)操作既浪費(fèi)時(shí)間又耗費(fèi)人力,怎么辦呢时甚?
使用自動(dòng)化工具!
但是市面上的自動(dòng)化工具體積往往都非常龐大荒适,而且必須編寫相應(yīng)的腳本來做,面對(duì)以上簡單的自動(dòng)化需求來說刀诬,有點(diǎn)“拿著大炮打蚊子”了。
本次分享肌割,小編將介紹搜狗同學(xué)自己做的一款簡單的鼠標(biāo)錄制回放工具。
PS:感興趣的各位讀者也可以去Git上下載源碼進(jìn)行修改把敞。
程序下載地址:
源碼下載地址:
https://github.com/sogou/Test-ClickPrograme.git
源碼解讀:
本次小編介紹的工具中有兩個(gè)關(guān)鍵函數(shù)榨惠,一個(gè)是錄制函數(shù)盛霎;一個(gè)是回放函數(shù)。
錄制函數(shù):(通過鼠標(biāo)位置進(jìn)行相應(yīng)坐標(biāo)點(diǎn)轉(zhuǎn)換愤炸,同時(shí)加入動(dòng)作隊(duì)列)
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("鼠標(biāo)動(dòng)作");
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;
}
回放函數(shù):(將隊(duì)列中的動(dòng)作拿出來執(zhí)行鼠標(biāo)點(diǎn)擊操作)
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;
}
工具使用方法:
示例:小編接到一個(gè)測(cè)試任務(wù):重現(xiàn)搜狗瀏覽器反復(fù)切換標(biāo)簽頁假死的問題规个,為了節(jié)省人力姓建,小編進(jìn)行了如下工作:
1.在需要增加點(diǎn)擊的地方按下shift + A。依次類推速兔,添加多個(gè)點(diǎn)擊點(diǎn)。
2.在程序界面上配置要點(diǎn)擊的次數(shù)谍婉、間隔時(shí)間和循環(huán)次數(shù)。
3.按下shift+R運(yùn)行點(diǎn)擊腳本屡萤。
4.如果希望立即停止已配置的點(diǎn)擊工作分俯,可以按下shift+S懦铺。
具體實(shí)現(xiàn)的效果: