使用BackGroundWorker运行WatiN以打开IE浏览器

时间:2014-10-11 22:10:12

标签: c# winforms testing watin

我只是使用WatIn而没有任何其他测试框架,如NUnit或其他。

当我尝试运行BackGroundWorker打开IE浏览器时,会出现错误

  

类型' System.Threading.ThreadStateException'的例外情况发生了   在WatiN.Core.dll中但未在用户代码中处理

     

其他信息:CurrentThread需要拥有它   ApartmentState设置为ApartmentState.STA以便能够自动化   Internet Explorer。

我在stackoverflow上读了一些线程但是,所有的测试都失败并且出现了同样的错误。

有人可以帮助我吗?

代码

BackgroundWorker _worker = new BackgroundWorker();
            _worker.WorkerReportsProgress = true;
            _worker.ProgressChanged += new ProgressChangedEventHandler(_worker_ProgressChanged);
            _worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_worker_RunWorkerCompleted);            
            _worker.DoWork += (s, e2) =>
            {
                Loga(usuario, senha);
            };
            _worker.RunWorkerAsync();

    protected void Loga(string usuario, string senha)
    {            
        using (var browser = new IE("my page here"))
        {
           //Code here
        }
    }

1 个答案:

答案 0 :(得分:1)

您无法使用Watin启动多个线程。但你可以触发IE的几个实例:

IE browser1 = new IE();
IE browser2 = new IE();

browser1.GoTo("http://www.google.com");
browser2.GoTo("http://www.yahoo.com");