调试模式下的Watin行为与正常模式下的不同

时间:2012-06-01 05:47:31

标签: c# visual-studio-2008 automation watin ui-automation

我使用这个简单的代码测试WatiN库:

using (var browser = new IE("http://www.google.de"))
{
    browser.TextField(Find.ByName("q")).TypeText("WatiN");        
    Button btn1 = browser.Button(Find.ById("gbqfba"));
    btn1.Click();
    while (!browser.ContainsText("watin.org"))
    {
        System.Threading.Thread.Sleep( 500 );
        btn1.Click();
    }
}

无论如何,当我在某个地方有一个断点的调试模式下运行时,它工作正常,但是一旦我在发布模式下运行它就会输入所需的文本,但按钮似乎没有被点击,所以我有一个搜索字段在其中的文字,我没有得到任何搜索结果。

有关此问题的任何已知问题?有任何想法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您需要在代码中插入等待,直到所有内容都加载完毕,然后您才能找到控件。

它在调试模式中工作,因为,在使用断点进行调试时,可以完全加载时间。

答案 1 :(得分:1)

我也是一个WatiN新手,在我开始工作之前我花了一段时间。首先,阅读此解决方案:

WatiN clicking a button

您可能必须尝试不同的方法来实施解决方案,以使其适合您。例如:

首先我放线

browserInstance.NativeDocument.Body.SetFocus(); // set focus befor u click

在“单击”操作之前,但仅在调试模式下工作(我的代码以前根本不起作用,所以让它在调试模式下工作就是进步)。

然后我将该行放在每个项目之前,让它在运行模式下工作:

browserInstance = new IE(@"http://www.google.com");

TextField criteria = browserInstance.TextField(tf => tf.Name == "q");

browserInstance.NativeDocument.Body.SetFocus(); // set focus befor u click
criteria.TypeText("Come Jam With Us");

browserInstance.NativeDocument.Body.SetFocus(); // set focus befor u click
browserInstance.Button(Find.ById("gbqfb")).Click();

我不确定为什么会这样,但我希望它有所帮助。