我可以强制刷新断言吗?

Can I force an Assert to refresh?

我有一个显示列表的 wfp window。该列表有分页,所以如果它是一个长列表,我可以单击下一步并查看第 2、3、4 页等上的行。

我有一个断言,断言每一行显示的日期。首先,我在第一页的第一行断言日期(工作正常),然后我在第 2 页的第一行断言日期。当我断言第 2 页的第一行时,问题就开始了,它实际上断言了第一行第 1 页上的行。我的伪代码是...

//断言第 1 页第 1 行的日期有效 /*WORKS OK*/

//单击“下一步”移至第 2 页。/*工作正常*/

//断言第 2 页第 1 行的日期有效/*问题在这里*/

出于好奇,我更改了测试,删除了第一个断言并注意到第 2 页第 1 行的断言开始工作...

//单击下一步移至第 2 页。/*工作正常*/

//断言第 2 页第 1 行的日期有效/*WORKS OK*/

所以代码是正确的,它能够断言第 2 页,第 1 行,但它只能正确断言一次。在第二个断言上,它保留第一个断言的结果。这两个断言都是通过记录它们来创建的。当我记录第二个断言时,它使用与第一个断言相同的 属性。 属性 是只读的,所以我找不到清除它的方法。

我希望两个断言都能正常工作,我的基本问题是如何在同一个列表中多次断言并每次都获得最新值?我认为当我弄清楚如何记录第二个断言并强制记录的断言不使用与第一个断言相同的 属性 时答案就会出现,或者可能有一种方法可以清除我第二次断言之前的旧值。

    public void Assert_Alerts_TimestampOfTopRowValid_Page1()
    {
        #region Variable Declarations
        WpfText uIItem04012017153411Text = this.UIOptimalMyClientShWindow.UIItemCustom1.UIItemCustom11.UIItem04012017153411Text;
        #endregion

        // Verify that the 'DisplayText' property is not null
        Assert.IsNotNull(uIItem04012017153411Text.DisplayText, "Can\'t assert the timestamp of first alert");
    }

    public void Assert_Alerts_TimestampOfTopRowValid_Page2()
    {
        #region Variable Declarations
        WpfText uIItem04012017153411Text = UIItem04012017153411Text;    
                                    \I AM CONCERNED ABOUT WHY THIS IS RECORDED
                                    \WITH THE SAME VARIABLE AS THE LAST ASSERT.
                                    \HOW CAN I FLUSH THE VALUE OF THE VARIABLE
                                    \AND MAKE THE CODED UI TEST ASSERT IT AGAIN
                                    \OR RECORD WITH A DIFFERENT VARIABLE?
        #endregion

        // Verify that the 'DisplayText' property is not null
        Assert.IsNotNull(uIItem04012017153411Text.DisplayText, "Alert Timestamp on page 2 not valid.");
    }

我的属性是...

    private WpfText mUIItem04012017153411Text;

    public WpfText UIItem04012017153411Text
    {
        get
        {
            if ((this.mUIItem04012017153411Text == null))
            {
                this.mUIItem04012017153411Text = new WpfText(this);
                #region Search Criteria
                this.mUIItem04012017153411Text.SearchProperties[WpfText.PropertyNames.AutomationId] = "TxtBlockAutoID10";
                this.mUIItem04012017153411Text.WindowTitles.Add("MyApp");
                #endregion
            }
            return this.mUIItem04012017153411Text;
        }
    }

我认为问题在于分配给 WpfText uIItem04012017153411Textthis.UIOptimalMyClientShWindow.UIItemCustom1.UIItemCustom11.UIItem04012017153411Text 的值。此控件引用第一页上的日期字段。您可以看到它的旧值将用于 if ((this.mUIItem04012017153411Text == null)) 的测试和 this.UIOptimalMyClientShWindow.UIItemCustom1.UIItemCustom11.

中其他名称的属性中的类似测试

解决方案是调用控件的 Find() 方法来强制重新评估搜索。您的问题与 this one 非常相似,答案相同。