CodedUI测试不等待控制存在

问题描述 投票:2回答:7

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

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

我正在使用的代码是:

uIOKButton.WaitForControlExist(2000000);

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

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

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

c# visual-studio-2010 testing coded-ui-tests
7个回答
1
投票

我是这样做的:

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

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


0
投票

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

代码看起来像这样

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

谢谢,Karthik


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永远不会出现


0
投票

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

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

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


0
投票

您可能还想尝试WaitForControlReady


0
投票

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

[Timeout(TestTimeout.Infinite)]

0
投票

尝试这个,在找到控件ID之前,为我做了诀窍但是需要花费一些时间。所以如果你想早点加载可能会寻找替代方案。

BrowserWindow window = new BrowserWindow();
window.WaitForControlExist();
© www.soinside.com 2019 - 2024. All rights reserved.