How to validate a particular row among many rows?



  • How to validate a particular row data among many rows in the table for testing in c# and once if all the data are verified than test case is passed and if not verified then fail?

    using System;
    using System.Threading;
    using System.Windows.Automation;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Winium;
    
    namespace SFGridDataTest
    {
        [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            public void TestMethod1()
            {
                DesktopOptions options = new DesktopOptions();
                options.ApplicationPath = @"C:\Users\windev\Desktop\WPF\bin\Debug\SfDataGridDemo.exe";
                WiniumDriver driver = new WiniumDriver(@"C:\Users\windev\Desktop\DemoWPF\Winium.Desktop.Driver", options);
                Thread.Sleep(3000);
                driver.FindElementById("btn_Close").Click();
                AutomationElement desktop = AutomationElement.RootElement;
    
                //AutomationElement of SfDataGrid.
                AutomationElement datagrid = desktop.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "sfgrid"));
    
                //AutomationElement of GridCell in SfDataGrid
                var cellAutomationElement = desktop.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "Cell1"));
                var cellAutomationElement1 = desktop.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "Cell2"));
                var cellAutomationElement2 = desktop.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "Cell3"));
                var cellAutomationElement3 = desktop.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "Cell4"));
                var cellAutomationElement4 = desktop.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "Cell5"));
    
                //AutomationElement of Row in SfDataGrid
                var row = desktop.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "Row1"));
    
                //Loctating the automation id for the each cell
                AutomationElement.AutomationElementInformation currentAutomationElement = cellAutomationElement.Current;
                AutomationElement.AutomationElementInformation currentAutomationElement1 = cellAutomationElement1.Current;
                AutomationElement.AutomationElementInformation currentAutomationElement2 = cellAutomationElement2.Current;
                AutomationElement.AutomationElementInformation currentAutomationElement3 = cellAutomationElement3.Current;
                AutomationElement.AutomationElementInformation currentAutomationElement4 = cellAutomationElement4.Current;
    
                //extracting each value from the cells
                string[] array = currentAutomationElement.ItemStatus.Split(new string[]
                {
                "#"
                }, StringSplitOptions.RemoveEmptyEntries);
                string[] array1 = currentAutomationElement1.ItemStatus.Split(new string[]
                {
                "#"
                }, StringSplitOptions.RemoveEmptyEntries);
                string[] array2 = currentAutomationElement2.ItemStatus.Split(new string[]
                {
                "#"
                }, StringSplitOptions.RemoveEmptyEntries);
                string[] array3 = currentAutomationElement3.ItemStatus.Split(new string[]
                {
                "#"
                }, StringSplitOptions.RemoveEmptyEntries);
                string[] array4 = currentAutomationElement4.ItemStatus.Split(new string[]
                {
                "#"
                }, StringSplitOptions.RemoveEmptyEntries);
    
                //Storing the each value of cells
                var cellValue = array[0];
                var cellValue1 = array1[0];
                var cellValue2 = array2[0];
                var cellValue3 = array3[0];
                var cellValue4 = array4[0];
                Thread.Sleep(3000);
                System.Diagnostics.Debug.WriteLine("Cell Zero: " + cellValue);
                System.Diagnostics.Debug.WriteLine("Cell One: " + cellValue1);
                System.Diagnostics.Debug.WriteLine("Cell Two: " + cellValue2);
                System.Diagnostics.Debug.WriteLine("Cell Three: " + cellValue3);
                System.Diagnostics.Debug.WriteLine("Cell Four: " + cellValue4);
                Assert.IsTrue(cellValue == "1001");
                Thread.Sleep(3000);
                System.Diagnostics.Debug.WriteLine("Full Row Data: " + cellValue + " " + cellValue1 + " " + cellValue2 + " " + cellValue3 + " " + cellValue4);
            }   
        }
    }
    


  • Your code seems to have many internal representations that are not easy to interpret for someone outside your project; so I will suggest something in general:

    Let's say: 1 - A row is located by the tr tag. 2 - The row has two cells, located by the classes .cell1 and .cell2

    You want to check the data of the row which cell1 is enabled.

    You would do:

    // Grab all the rows
    rows = driver.findElements(By.cssSelector("tr"));
    
    // Filter the rows by the enabled criteria, grabbing the first matching row
    enabledRow = rows.filter( row => row.findElement(".cell1").isEnabled())[0];
    
    // Checks the data
    assertEquals( enabledRow.findElement(".cell1").text, "Cell 1");
    assertEquals( enabledRow.findElement(".cell2").text, "Cell 2");
    

Log in to reply
 

Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2