既然选择远方,便只顾风雨兼程……

Winform自动化测试解决对话框问题(多线程)

上一篇 / 下一篇  2008-11-11 15:27:58 / 个人分类:测试职业历程

/DfW+e!]8w;F0近期做一个项目的自动化测试,遇到弹出的dialog的处理。51Testing软件测试网0D ?c Z5h [|.]

51Testing软件测试网^0D1Wp/^8\ R6M:`N.|

当时第一印象就是应该用多线程来处理,即一个线程来处理打开应用程序,模拟操作然后点击“确定”,等待弹出对话框。另一个线程则用来监视是否有对话框,然后判断并关闭对话框。51Testing软件测试网l Tl4gx]'D

:E9yF!H j/B;X;I0在网络上查找了一些资料,最终采用了AutoResetEvent,ManualResetEvent的方式解决这个问题,在线程池中操作对话框监视和关闭对话框两个操作。
!H$l2kyy|s0using Microsoft.VisualStudio.TestTools.UnitTesting;
0Wp+r,m o s)xT0using System.Collections;51Testing软件测试网9ZF PM;r
using System.Threading;51Testing软件测试网\BY,sBN,[!U&e
using System.Windows.Forms;51Testing软件测试网4N+g&l)X'BF/S

R Gp'b#@o/h3Jc*M-H(Q0namespace APSAutoFunctionalTestProjecct
4uV^$O*S*v'\0{51Testing软件测试网 nw}k Uua
    public class CalendarHanding51Testing软件测试网 _AG _7u'F0P
    {    51Testing软件测试网R_ fw*A z
        AutoResetEvent autoResetEvent;
7E qb?JT0        ManualResetEvent manualResetEvent;
K8\ ?YK x6iI0       
-JC2mHt9X0        public CalendarHanding()
!yK:e ?F2s0        {          51Testing软件测试网W#e.Pw*|
            autoResetEvent = new AutoResetEvent(false);51Testing软件测试网$}/@%UGrYZ7x-r ^r(T(U
            manualResetEvent = new ManualResetEvent(false);
xxhS"~0            ThreadPool.QueueUserWorkItem(new WaitCallback(NewCalendar));
Y1jE @9zk)^0            ThreadPool.QueueUserWorkItem(new WaitCallback(CloseTheDialog));
kk+^m$[_:p~4o0            WaitHandle.WaitAll(new AutoResetEvent[] { autoResetEvent },5000,true);51Testing软件测试网"~1wk~ SD F2h
            manualResetEvent.Reset();51Testing软件测试网KM]^iJ|
        }

8p f*L!yB._WIY051Testing软件测试网"^IM"G+x{HI2C5nVH

        public void NewCalendar(object stateInfo)
1]|RTpOU&L:P0        {51Testing软件测试网9hRb}1G:j
                //操作找到窗体的函数(没有点击确定的步骤)51Testing软件测试网7DNO)o)ny0M
                InputTestData("TesTData");
*h*S k&?{:l y!n0                manualResetEvent.Set();51Testing软件测试网L3W~){\|S&l(H
                //点击“确定”按钮提交数据,点击后待测系统会弹出一个信息提示框51Testing软件测试网\ p\$W+S
                ((Ranorex.Button)(controlList[1])).Click();
Q5Xrk4JE0        }

,e/|)fp_!Kt8m'l,L0

#b+a7{ ^ g,a7W0        public void CloseTheDialog(object stateInfo)
:L0OO&|-D:`8A0b~~0        {51Testing软件测试网L%R!wbY1cw5l
          51Testing软件测试网F:M])e4y/E[ j'P5b
                manualResetEvent.WaitOne();               
:{kd W@)g/_&\ E0                //关闭信息提示框51Testing软件测试网 ^G4d2Uu
                CloseDialog("InformationDialog");51Testing软件测试网4Y.OCOuR _'?4f9c
                autoResetEvent.Set();51Testing软件测试网Xz4@cC
        }51Testing软件测试网w.{M7k%U!\
    }51Testing软件测试网gi*WXA m$_
}
EWy f Q%D1C:OL0

&b)B"z/x-s0

TAG: 自动化测试 测试职业历程 对话框 多线程

 

评分:0

我来说两句

Open Toolbar