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

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

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

51Testing软件测试网q9t Dr0Z8w+y~D

近期做一个项目的自动化测试,遇到弹出的dialog的处理。51Testing软件测试网8dj`W0l

51Testing软件测试网-?#k n!L$hqM

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

1B XzL0X VRu g Q: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;

)~;w.bzB0

|5{,nIL1p!?#p0namespace APSAutoFunctionalTestProjecct51Testing软件测试网qK/g^$KV/OY#Q:c(_
{51Testing软件测试网;?/U;Z+p g[&[
    public class CalendarHanding
yvU+HdX"U*R'}0    {    
2A/A8G6| O E8F1?0        AutoResetEvent autoResetEvent;51Testing软件测试网6X,Tr3F5k7w%\TQ-N
        ManualResetEvent manualResetEvent;
9j4o`U*AUL0       51Testing软件测试网8I EQK7cj t O!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@

51Testing软件测试网1U DBY/E2?*E"\1A

        public void NewCalendar(object stateInfo)
&l(H+E `1w:WP0        {51Testing软件测试网 a4j6O2}l&yA^wC
                //操作找到窗体的函数(没有点击确定的步骤)
/YC8xV Z'ry%h0                InputTestData("TesTData");
I K7b+G8DX[i~0                manualResetEvent.Set();51Testing软件测试网;OY eaA*X6x7]].V
                //点击“确定”按钮提交数据,点击后待测系统会弹出一个信息提示框
l'Jb \)n.q3q0                ((Ranorex.Button)(controlList[1])).Click();51Testing软件测试网0?OKk"XH4_
        }51Testing软件测试网m q6}N H ei8K

6BaBKlai0        public void CloseTheDialog(object stateInfo)51Testing软件测试网*v7P;^j+V!f0L
        {51Testing软件测试网5m F&J5E1H$H6Q }e Ey
          
~P0D5Y5e'd#Hq6n3a l0                manualResetEvent.WaitOne();               
/Y[%cs&WCRj~ @0                //关闭信息提示框
y$C @#?&|0                CloseDialog("InformationDialog");
#@&o*uN"QxJ0                autoResetEvent.Set();
p3d;n.p(o0        }
'j6D;@4L0ug'av2x0    }51Testing软件测试网}"W G7?i+{jO x
}
7shA cs ~K051Testing软件测试网6A*tO.g?xV)zCfl


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

 

评分:0

我来说两句

Open Toolbar