CodedUI测试不等待控制存在

时间:2012-07-31 09:42:11

标签: c# visual-studio-2010 testing coded-ui-tests

我正在等待控件存在,但测试在按钮存在之前失败。

它给出错误:The control is not available or not valid

我正在使用的代码是:

uIOKButton.WaitForControlExist(2000000);

// Click 'OK' button
Mouse.Click(uIOKButton, new Point(46, 19));

超时,即使我将它设置为3小时,但在30分钟后超时。所以超时不按照预期的方式运行。不管怎么说呢?

除了增加超时之外,还有什么能阻止它失败吗?

7 个答案:

答案 0 :(得分:1)

我是这样做的:

while (!uIItemComboBox.Exists)
        {
            System.Threading.Thread.Sleep(1000);
        }
uIItemComboBox.SelectedItem = this.MyComboBox.UIItemComboBoxSelectedItem;

我确信有更好的方法,但它确实有效。

答案 1 :(得分:0)

我建议你添加一个支票:

int count = 1;
while (btnExists() == false){ 
    if (count > 1000) {
        //fail test or say that btn is not available
     }
    count ++;
    wait (1);
}

您不必等待超过必要的时间。只要btn可用,测试将继续进行。但是请务必将“count”设置为在某个时间有一个退出点,以防btn永远不会出现

答案 2 :(得分:0)

您可以使用while循环而不是if语句

代码看起来像这样

loopcyle = 1;
While(!uIOKButton.WaitForControlExist(2000) && loopcycle <=20)
{
    // Click 'OK' button
    Mouse.Click(uIOKButton, new Point(46, 19));
    loopcycle ++;
    break;
}

谢谢, Karthik KK

答案 3 :(得分:0)

你原来做的是正确的做法。 但是30分钟后会弹出默认测试超时。

在Solution Items文件夹下的测试解决方案中,找到local.testsettings

双击它,转到超时并删除30分钟的默认超时。

答案 4 :(得分:0)

您可能还想尝试WaitForControlReady

答案 5 :(得分:0)

使用Timeout属性使任何特定测试变为无限。如果您知道测试将一直运行到该时间,也可以指定一个特定的时间。

[Timeout(TestTimeout.Infinite)]

答案 6 :(得分:0)

尝试此操作,然后找到控件ID,这对我来说很成功,但这将花费一些时间。因此,如果您想提早加载,请寻找替代方法。

BrowserWindow window = new BrowserWindow();
window.WaitForControlExist();