2

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

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

我正在使用的代码是:

uIOKButton.WaitForControlExist(2000000);

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

超时,即使我将其设置为 3 小时,也会在 30 分钟后超时。所以超时没有按预期的方式工作。反正周围有吗?

除了增加超时之外,还有什么方法可以阻止它失败?

4

7 回答 7

1

我是这样做的:

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

我敢肯定有更好的方法,但它的工作原理。

于 2012-08-21T12:00:45.383 回答
0

You can use while loop instead of if statement

The code looks something like this

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

Thanks, Karthik KK

于 2012-08-01T02:28:34.017 回答
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 永远不会出现

于 2012-07-31T15:44:17.630 回答
0

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

在解决方案项目文件夹下的测试解决方案中找到 local.testsettings

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

于 2012-08-28T01:01:11.440 回答
0

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

[Timeout(TestTimeout.Infinite)]
于 2018-07-04T06:35:10.460 回答
0

试试这个,在找到控件 ID 之前,对我有用,但这需要一些时间。所以如果你想早点加载可能会寻找替代方案。

BrowserWindow window = new BrowserWindow();
window.WaitForControlExist();
于 2018-09-07T17:29:06.030 回答
0

您可能还想尝试WaitForControlReady

于 2017-01-19T07:27:02.913 回答