coded-ui-tests – 循环中的“control.Exists”第一次工作,而不是第二次编码ui

考虑代码

for(i = 0; i < 5; i++)
{
    if(control.Exists)
    {
        mouse.Click(button);
    }
}

在此,控件是一个弹出窗口.第一次执行时,control.Exists = true,第二次虽然控件存在,但它是假的.为什么会这样?如何使它成为真实?

提前致谢.

程序经常绘制另一个控件的副本,它看起来与眼睛相同,但它是不同的.因此,第二次循环控制是指控件的旧版本,但它不再存在.

您的代码很可能等同于

for(i = 0; i < 5; i++)
{
    if(top.middle.control.Exists)
    {
        mouse.Click(top.middle.button);
    }
}

UI Control层次结构中可能有更多级别,但这里有三个足以进行解释.

正常的解决方法是在使用之前找到控件的新副本.所以改变代码

for(i = 0; i < 5; i++)
{
    top.middle.Find();
    if(top.middle.control.Exists)
    {
        mouse.Click(top.middle.button);
    }
}

如果这不起作用,因为中间也不可用,那么使用top.Find();.

要了解有关哪些控件可用的更多信息,请尝试使用此类代码并观察屏幕的哪些部分用蓝色框突出显示.

for(i = 0; i < 5; i++)
{
    top.DrawHighLight();
    top.middle.DrawHighLight();
    top.middle.control.DrawHighLight();
    if(top.middle.control.Exists)
    {
        mouse.Click(top.middle.button);
    }
}
相关文章