原文发表于2008-11-11 15:27:58

近期做一个项目的自动化测试,遇到弹出的dialog的处理。

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

在网络上查找了一些资料,最终采用了AutoResetEvent,ManualResetEvent的方式解决这个问题,在线程池中操作对话框监视和关闭对话框两个操作。

附上代码:

 

using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections;
using System.Threading;
using System.Windows.Forms;

namespace APSAutoFunctionalTestProjecct
{
    
public class CalendarHanding
    {     
        AutoResetEvent autoResetEvent;
        ManualResetEvent manualResetEvent; 
        
        
public CalendarHanding()
        {           
            autoResetEvent 
= new AutoResetEvent(false);
            manualResetEvent 
= new ManualResetEvent(false);
            ThreadPool.QueueUserWorkItem(
new WaitCallback(NewCalendar));
            ThreadPool.QueueUserWorkItem(
new WaitCallback(CloseTheDialog));
            WaitHandle.WaitAll(
new AutoResetEvent[] { autoResetEvent },5000,true);
            manualResetEvent.Reset();
        }

        
public void NewCalendar(object stateInfo)
        {
                
//操作找到窗体的函数(没有点击确定的步骤)
                InputTestData("TesTData");
                manualResetEvent.Set();
                
//点击“确定”按钮提交数据,点击后待测系统会弹出一个信息提示框
                ((Ranorex.Button)(controlList[1])).Click();
        }

        
public void CloseTheDialog(object stateInfo)
        {
           
                manualResetEvent.WaitOne();                
                
//关闭信息提示框
                CloseDialog("InformationDialog");
                autoResetEvent.Set();
        }
    }
}

相关文章:

  • 2021-08-27
  • 2021-07-28
  • 2022-01-18
  • 2022-12-23
  • 2021-11-12
  • 2021-09-30
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-03-05
  • 2021-10-14
  • 2021-09-20
  • 2021-11-11
  • 2022-12-23
相关资源
相似解决方案