Data driven find row -can only bind one field

5 posts, 0 answers
  1. peter
    peter avatar
    3 posts
    Member since:
    May 2019

    Posted 24 May Link to this post

    By going over the docs and some videos, I've managed to write a test that finds a table row by name (rather than table position) and check that data in another column is as expected. However, it doesn't look great in Test studio because it involves editing the find logic and therefore to look at, you wouldn't know what its doing unless you inspect the elements. It's also a bit laborious to do again and again for different test cases. -Screenshot attached.

    SO, I decided the thing to do was to data bind it.
    However, its seems that data bind only lets me bind to the find expression, I need that bound and also a binding to say what the expected result in column B is.

    In other words, my data file is like this:
    NAME         STATUS
    Centiro        Passed
    Bob smith    Passed
    Alan J          Failed

    Currently the check for 'Passed', 'Failed' is a part of the element and I can't bind it. -Screenshot attached.

    Do I need to code this instead?
    Note: most videos on this topic talk of having an edit button or something, I don't have buttons, just a table of data.
  2. Plamen Mitrev
    Admin
    Plamen Mitrev avatar
    71 posts

    Posted 27 May Link to this post

    Hello Peter,

    I analyzed the find expression that you have created and the test scenario from the attached screenshots. I see that you are getting a table row, which contains specific text "Centiro" and you have data driven that text in the find expression. You can remove the other filter, that checks for "Passed" value and the find expression should return a combined string of the values from all cells in the specified row.

    To check for the "Status" in the next cell, you need to bind it from the Properties pane -> Bindings for step 4 and keep the CompareType as Contains. Test Studio will again check the above mentioned string for the text content.

    The chained find expression works best with hierarchical controls such as tree view. That said, it can be utilized in a grid, but the best approach in my experience is to use a coded step. Please check the sample code that iterates through all cells in a grid. Once you find a specific cell, you can get the parent row element and verify the value in another cell either by iterating the row, or specifying the exact cell by index. You can also use external or local data to bind to the coded step.

    Currently, you can only data driven one attribute from the find logic. We have created a public feedback item to bind multiple attributes at the same time. You can vote for that item to increase the customer value and we will evaluate it for our next releases.

    I hope that the above details will help you automate your scenario. Please do not hesitate to contact us, if you need further assistance.

    Regards,
    Plamen Mitrev
    Progress Telerik
     
    The New Release of Telerik Test Studio Is Here! Download, install,
    and send us your feedback!
  3. peter
    peter avatar
    3 posts
    Member since:
    May 2019

    Posted 29 May in reply to Plamen Mitrev Link to this post

    Thanks Plamen,
    I managed to get it working with code, and I also managed to data bind it.
    It works well but one slight problem - when 1of 3 iterations fail, the test seems to report as passed, even though the log says failed.
    Why is this?
    screenshot and code attached
  4. peter
    peter avatar
    3 posts
    Member since:
    May 2019

    Posted 29 May Link to this post

    posted wrong code. Here's the code:

     

        public class codedGridVerify : BaseWebAiiTest
        {
            #region [ Dynamic Pages Reference ]

            private Pages _pages;

            /// <summary>
            /// Gets the Pages object that has references
            /// to all the elements, frames or regions
            /// in this project.
            /// </summary>
            public Pages Pages
            {
                get
                {
                    if (_pages == null)
                    {
                        _pages = new Pages(Manager.Current);
                    }
                    return _pages;
                }
            }

            #endregion
            // Add your test methods here...
            [CodedStep(@"New Coded Step")]
            public void codedGridVerify_CodedStep()
            {
    //**********************************************************
    //Verify Centiro passed*************************************
    //**********************************************************            
    HtmlTableRow containerRow=null;
    //Loop all cells
    foreach (HtmlTableRow r in Pages.PipelineHistoryUPSTescom.TablePipeline.AllRows)
        {
        foreach(HtmlTableCell c in r.Cells)
            {
            if (c.TextContent.Equals(Data["INPUT A"].ToString()))
                {containerRow = c.Parent<HtmlTableRow>();}
        }
    }
    //Check the expected status
    if (containerRow != null)
        {Assert.AreEqual(containerRow.Cells[5].TextContent, Data["INPUT B"].ToString());}
    //**********************************************************
    //**********************************************************
            }
        
        }

     

  5. Plamen Mitrev
    Admin
    Plamen Mitrev avatar
    71 posts

    Posted 31 May Link to this post

    Hello Peter,

    Your code iterates successfully throughout all cell in the table and works great for this scenario.

    The result from your shared screenshot is from the first iteration from this quick execution. You can view the results from the other iterations by changing them in the dropdown (see attachment).

    When you use data driven testing in a Test List, the results from all iterations are summarized in the Test Results pane. You can drill down to find the exact step, which failed and check the step failure details.

    I hope that the above details will help you analyze the results and adjust the test. Please do not hesitate to contact us again.

    Regards,
    Plamen Mitrev
    Progress Telerik
     
    The New Release of Telerik Test Studio Is Here! Download, install,
    and send us your feedback!
Back to Top