我可以强制断言刷新吗?

时间:2017-01-06 10:45:28

标签: coded-ui-tests

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

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

//第1页上的断言日期第1行有效/ *工作正常* /

//单击下一步转到第2./*工作确定* /

//第2页上的断言日期第1行有效/ *问题此处* /

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

//单击“下一步”转到第2页./ *工作正常* /

//第2页上的断言日期第1行有效/ *工作正常* /

所以代码是正确的,它能够断言第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;
        }
    }

1 个答案:

答案 0 :(得分:4)

我认为问题在于this.UIOptimalMyClientShWindow.UIItemCustom1.UIItemCustom11.UIItem04012017153411Text分配给WpfText uIItem04012017153411Text的价值。此控件引用第一页上的日期字段。您可以看到它的旧值将用于if ((this.mUIItem04012017153411Text == null))的测试以及this.UIOptimalMyClientShWindow.UIItemCustom1.UIItemCustom11中其他名称的属性中的类似测试。

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