Knowledge Base Article

Home Page > Knowledge Base > Rapise

Article Using Rapise to Validate Display of Data Grid Data

by Adam S on Friday, August 8, 2014

One common requirement is to run a query in an application being tested and verify that the data on the screen matches the data in the application. This article explains the recommended process for doing this.

Accessing the Database Data

Rapise comes with a Database query global object that allows you to send SQL queries to a database and then iterate through the results. You drag the 'Database' global object into the script editor and then use:

  • Database.DoAttach() - to make the database connection and specify the SQL query
  • Database.GetRowCount() - to verify that there is data
  • Database.DoSequential() - to loop through the dataset row by row
  • Database.GetValue() - to get that row's data

Here is a complete example:

var success = Database.DoAttach('Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SpiraTest;Data Source=.', 'SELECT * FROM TST_PROJECT');
Tester.Assert('Successfully Connected', success);

var count = Database.GetRowCount();
Tester.Message(count);

//Loop through the rows
while(Database.DoSequential())
{
var projectId = Database.GetValue("PROJECT_ID");
var name = Database.GetValue("NAME");
var description = Database.GetValue("DESCRIPTION");
}

Next we need to get the data from the user interface.

Verifying the Data in the UI

To verify the data in the user interface, we need to use the XPath approach outlined in this guide to dynamically access the rows of data in the HTML table that contains the data:

http://www.inflectra.com/Rapise/Guides/Working-with-HTML-Tables.aspx

You can then use the LEARN (CTRL+2) option to learn one of the cells in the datagrid and then adjust the XPATH of the learned object to actually point to the whole table.

Then you can use the following query to get all the rows in the table:

var rows = SeS('Table').DoDOMQueryXPath('./tr');
Tester.Message ("Rows count:"+rows.length);

Then for each row you can loop through all the cells to compare the data with that from the database query performed earlier:

// Extract all data from the Balance table
function ExtractTableData()
{
// Array that will contain all rows
var tableData = [];
// Get all rows from the table
var rows = SeS('Table')._DoDOMQueryXPath('./tr');
Tester.Message("Rows count:"+rows.length);
// Extract valuable data from the table into 'TableData' structure
for(var i=2; i<rows.length-2; i=i+2)
{
var cells = rows[i]._DoDOMQueryXPath('./td');
// Each row is a structure with fields: project-id, name, description
// Create empty structure to contain row data
var rowData={};
// And fill it according to known structure
if(cells.length>=3)
{
// Cell #1 - PROJECT_ID
rowData.projectId = cells[1].GetInnerText();
// Cell #2 - NAME
rowData.name = cells[2].GetInnerText();
// Cell #3 - DESCRIPTION
rowData.description = cells[3].GetInnerText();
}
// Finally add the row to the array
tableData.push(rowData);
}
return tableData;
}

Attachments
Article Info
Last Updated: 8/8/2014
Article ID: KB87
# Views: 2467
Powered by KronoDesk v1.1.0.15 | © Copyright Inflectra Corporation 2011-2016 | Licensed to Inflectra Corporation.