2012-06-12 20 views
2

我试图将Watin附加到Internet Explorer 9的现有实例。麻烦是无论我尝试什么,似乎只是超时。我使用的代码是:将Watin附加到现有的浏览器总是超时

Settings.AttachToBrowserTimeOut = 240; 
Settings.WaitUntilExistsTimeOut = 240; 
Settings.WaitForCompleteTimeOut = 240; 

Browser.AttachTo<IE>(Find.ByTitle("Google"), 240); 

这段代码是什么在华廷guide here减去我已经尝试了超时调整。我也尝试设置代码运行x86而不是任何CPU,但仍然无法正常工作。任何想法我做错了什么。

回答

2

您写入的方法缺少单线程ApartmentState。解决这个问题的最简单方法是在您尝试使用该代码的方法上面添加[STAThread]

例如这样的:

//[STAThread] 
static void Main(string[] args) 
{ 
    IE.AttachTo<IE>(Find.ByTitle("Google"), 5); 
} 

的作用就像你描述。当您取消注释[STAThread]

[STAThread] 
static void Main(string[] args) 
{ 
    IE.AttachTo<IE>(Find.ByTitle("Google"), 5); 
} 

它的工作原理如图所示。

+1

我被抓到了,因为我将主线程设置为STAThread,但让Watin代码运行事件处理程序。事件处理程序是MTA,不能被覆盖,据我所知。我通过从事件处理程序启动线程来解决它。 – PeteT