Winform自动化测试解决对话框问题(多线程)
上一篇 / 下一篇 2008-11-11 15:27:58 / 个人分类:测试职业历程
近期做一个项目的自动化测试,遇到弹出的dialog的处理。51Testing软件测试网8dj`W0l
51Testing软件测试网-?#k n!L$hqM当时第一印象就是应该用多线程来处理,即一个线程来处理打开应用程序,模拟操作然后点击“确定”,等待弹出对话框。另一个线程则用来监视是否有对话框,然后判断并关闭对话框。
1B XzL0XVRu gQ:o051Testing软件测试网sc8f?l在网络上查找了一些资料,最终采用了AutoResetEvent,ManualResetEvent的方式解决这个问题,在线程池中操作对话框监视和关闭对话框两个操作。51Testing软件测试网.y4bwz ]kRn
using Microsoft.VisualStudio.TestTools.UnitTesting;51Testing软件测试网^7ibP,x0u
using System.Collections;51Testing软件测试网 n!D1J-L]
using System.Threading;51Testing软件测试网j ~TqX:Omg2g
using System.Windows.Forms;
|5{,nIL1p!?#p0namespace APSAutoFunctionalTestProjecct51Testing软件测试网qK/g^$KV/OY#Q:c(_
{51Testing软件测试网;?/U;Z+pg[&[
public class CalendarHanding
yvU+Hd X"U*R'}0 {
2A/A8G6| O
E8F1?0 AutoResetEvent autoResetEvent;51Testing软件测试网6X,Tr3F5k7w%\TQ-N
ManualResetEvent manualResetEvent;
9j4o`U*AUL0 51Testing软件测试网8I
EQK7cjtO!l#Q
public CalendarHanding()
Zvx ~
CC!~;R:x*q0S0 { 51Testing软件测试网%I!M!R
T"i*C kM
y^
autoResetEvent = new AutoResetEvent(false);51Testing软件测试网9Rgw6j5JB:E
manualResetEvent = new ManualResetEvent(false);51Testing软件测试网3`1p
{jAnh~
ThreadPool.QueueUserWorkItem(new WaitCallback(NewCalendar));51Testing软件测试网3vYbAE1p/k0@-j
ThreadPool.QueueUserWorkItem(new WaitCallback(CloseTheDialog));
m7[8LX ?;]"hy\0 WaitHandle.WaitAll(new AutoResetEvent[] { autoResetEvent },5000,true);51Testing软件测试网Pkm1pVF`
manualResetEvent.Reset();51Testing软件测试网3M2O T AJx%gr
}51Testing软件测试网$x
K&I0Np@
public void NewCalendar(object stateInfo)
&l(H+E
`1w:WP0 {51Testing软件测试网
a4j6O2}l&yA^wC
//操作找到窗体的函数(没有点击确定的步骤)
/YC8xV
Z'ry%h0 InputTestData("TesTData");
IK7b+G8DX[i~0 manualResetEvent.Set();51Testing软件测试网;OYeaA*X6x7]].V
//点击“确定”按钮提交数据,点击后待测系统会弹出一个信息提示框