Extract data from html table where used pagination

Hello,
little snip how to extract html table data where has used pagination’s

import org.openqa.selenium.By as By
import org.openqa.selenium.WebDriver as WebDriver
import org.openqa.selenium.WebElement as WebElement

import com.kms.katalon.core.model.FailureHandling
import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

List<String> page1 = new ArrayList<>()
List<String> page2 = new ArrayList<>()
List<String> page3 = new ArrayList<>()
List<String> page4 = new ArrayList<>()
List<String> page5 = new ArrayList<>()
List<String> page6 = new ArrayList<>()

List<ArrayList> lArray = new ArrayList<ArrayList>();//Create a list of lists
lArray.add(page1)
lArray.add(page2)
lArray.add(page3)
lArray.add(page4)
lArray.add(page5)
lArray.add(page6)

myObject = new TestObject("myObject")
//Loop paginate
pagi = 1 //paginate start from 1
index = 0
//list for paginate buttons
List<String> list2 = new ArrayList<>()
WebUI.openBrowser('')
WebUI.navigateToUrl('https://datatables.net/examples/data_sources/dom')
WebDriver driver2 = DriverFactory.getWebDriver()
'To locate paginate buttons'
list2 = driver2.findElements(By.xpath("//a[contains(@class, 'paginate_button')]"))
println list2.size()
count = list2.size() - 2 //remove previous and next from the count
WebUI.closeBrowser()

//loop paginate
for (int i = 0; i < count; i++){
	
	WebUI.openBrowser('')
	WebUI.navigateToUrl('https://datatables.net/examples/data_sources/dom')

	//modify paginate object xpath property	
	path = "//div[@id='example_paginate']/span/a["+pagi+"]"
	myObject.addProperty("xpath", ConditionType.EQUALS, path, true)
	WebUI.click(myObject)//use new relative xpath locator
	WebUI.delay(1)


	//get all table cells data to the list array
	WebDriver driver = DriverFactory.getWebDriver()
	'To locate table'
	WebElement Table = driver.findElement(By.xpath('//table/tbody'))
	'To locate rows of table it will Capture all the rows available in the table'
	List<Double> rows_table = Table.findElements(By.tagName('tr'))
	int rows_count = rows_table.size()

	'Loop will execute for all the rows of the table'
	for (int row = 0; row < rows_count; row++) {
		'To locate columns(cells) of that specific row'
		List<Double> Columns_row = rows_table.get(row).findElements(By.tagName('td'))

		'To calculate no of columns(cells) In that specific row'
		int columns_count = Columns_row.size()

		'Loop will execute till the last cell of that specific row'
		for (int column = 0; column < columns_count; column++) {
			'It will retrieve text from each cell'
			String celltext = Columns_row.get(column).getText()	
			lArray.get(index).add(celltext)//add page data to array(pagex) which is in array lArray
		}
	}
	pagi++
	index++
	WebUI.delay(20)
	WebUI.closeBrowser()
	WebUI.delay(20)
}
println page1
println page2
println page3
println page4
println page5
println page6

//check that page1 contains expected value
boolean ans = page1.contains("Ashton Cox");
if (ans)
	System.out.println("The list contains expected name");
else
	System.out.println("The list does not contains expected name");

output:
2019-03-20 18:23:42.456 DEBUG testcase.TableValues                     - 34: println(page1)
[Airi Satou, Accountant, Tokyo, 33, 2008/11/28, $162,700, Angelica Ramos, Chief Executive Officer (CEO), London, 47, 2009/10/09, $1,200,000, Ashton Cox, Junior Technical Author, San Francisco, 66, 2009/01/12, $86,000, Bradley Greer, Software Engineer, London, 41, 2012/10/13, $132,000, Brenden Wagner, Software Engineer, San Francisco, 28, 2011/06/07, $206,850, Brielle Williamson, Integration Specialist, New York, 61, 2012/12/02, $372,000, Bruno Nash, Software Engineer, London, 38, 2011/05/03, $163,500, Caesar Vance, Pre-Sales Support, New York, 21, 2011/12/12, $106,450, Cara Stevens, Sales Assistant, New York, 46, 2011/12/06, $145,600, Cedric Kelly, Senior Javascript Developer, Edinburgh, 22, 2012/03/29, $433,060]
2019-03-20 18:23:42.470 DEBUG testcase.TableValues                     - 35: println(page2)
[Charde Marshall, Regional Director, San Francisco, 36, 2008/10/16, $470,600, Colleen Hurst, Javascript Developer, San Francisco, 39, 2009/09/15, $205,500, Dai Rios, Personnel Lead, Edinburgh, 35, 2012/09/26, $217,500, Donna Snider, Customer Support, New York, 27, 2011/01/25, $112,000, Doris Wilder, Sales Assistant, Sidney, 23, 2010/09/20, $85,600, Finn Camacho, Support Engineer, San Francisco, 47, 2009/07/07, $87,500, Fiona Green, Chief Operating Officer (COO), San Francisco, 48, 2010/03/11, $850,000, Garrett Winters, Accountant, Tokyo, 63, 2011/07/25, $170,750, Gavin Cortez, Team Leader, San Francisco, 22, 2008/10/26, $235,500, Gavin Joyce, Developer, Edinburgh, 42, 2010/12/22, $92,575]
2019-03-20 18:23:42.485 DEBUG testcase.TableValues                     - 36: println(page3)
[Gloria Little, Systems Administrator, New York, 59, 2009/04/10, $237,500, Haley Kennedy, Senior Marketing Designer, London, 43, 2012/12/18, $313,500, Hermione Butler, Regional Director, London, 47, 2011/03/21, $356,250, Herrod Chandler, Sales Assistant, San Francisco, 59, 2012/08/06, $137,500, Hope Fuentes, Secretary, San Francisco, 41, 2010/02/12, $109,850, Howard Hatfield, Office Manager, San Francisco, 51, 2008/12/16, $164,500, Jackson Bradshaw, Director, New York, 65, 2008/09/26, $645,750, Jena Gaines, Office Manager, London, 30, 2008/12/19, $90,560, Jenette Caldwell, Development Lead, New York, 30, 2011/09/03, $345,000, Jennifer Acosta, Junior Javascript Developer, Edinburgh, 43, 2013/02/01, $75,650]
2019-03-20 18:23:42.499 DEBUG testcase.TableValues                     - 37: println(page4)
[Jennifer Chang, Regional Director, Singapore, 28, 2010/11/14, $357,650, Jonas Alexander, Developer, San Francisco, 30, 2010/07/14, $86,500, Lael Greer, Systems Administrator, London, 21, 2009/02/27, $103,500, Martena Mccray, Post-Sales support, Edinburgh, 46, 2011/03/09, $324,050, Michael Bruce, Javascript Developer, Singapore, 29, 2011/06/27, $183,000, Michael Silva, Marketing Designer, London, 66, 2012/11/27, $198,500, Michelle House, Integration Specialist, Sidney, 37, 2011/06/02, $95,400, Olivia Liang, Support Engineer, Singapore, 64, 2011/02/03, $234,500, Paul Byrd, Chief Financial Officer (CFO), New York, 64, 2010/06/09, $725,000, Prescott Bartlett, Technical Author, London, 27, 2011/05/07, $145,000]
2019-03-20 18:23:42.501 DEBUG testcase.TableValues                     - 38: println(page5)
[Quinn Flynn, Support Lead, Edinburgh, 22, 2013/03/03, $342,000, Rhona Davidson, Integration Specialist, Tokyo, 55, 2010/10/14, $327,900, Sakura Yamamoto, Support Engineer, Tokyo, 37, 2009/08/19, $139,575, Serge Baldwin, Data Coordinator, Singapore, 64, 2012/04/09, $138,575, Shad Decker, Regional Director, Edinburgh, 51, 2008/11/13, $183,000, Shou Itou, Regional Marketing, Tokyo, 20, 2011/08/14, $163,000, Sonya Frost, Software Engineer, Edinburgh, 23, 2008/12/13, $103,600, Suki Burks, Developer, London, 53, 2009/10/22, $114,500, Tatyana Fitzpatrick, Regional Director, London, 19, 2010/03/17, $385,750, Thor Walton, Developer, New York, 61, 2013/08/11, $98,540]
2019-03-20 18:23:42.501 DEBUG testcase.TableValues                     - 39: println(page6)
[Tiger Nixon, System Architect, Edinburgh, 61, 2011/04/25, $320,800, Timothy Mooney, Office Manager, London, 37, 2008/12/11, $136,200, Unity Butler, Marketing Designer, San Francisco, 47, 2009/12/09, $85,675, Vivian Harrell, Financial Controller, San Francisco, 62, 2009/02/14, $452,500, Yuri Berry, Chief Marketing Officer (CMO), New York, 40, 2009/06/25, $675,000, Zenaida Frank, Software Engineer, New York, 63, 2010/01/04, $125,250, Zorita Serrano, Software Engineer, San Francisco, 56, 2012/06/01, $115,000]
2019-03-20 18:23:42.501 DEBUG testcase.TableValues                     - 40: ans = page1.contains("Ashton Cox")
2019-03-20 18:23:42.516 DEBUG testcase.TableValues                     - 41: if (ans)
The list contains expected name
2 Likes

This is great, but my pages can be in the 100’s sometimes.

hi,

what this will mean
“100’s sometimes”

Ah sorry, the number of pages in my tables can be in the 100’s range.

hello,

don’t worry all data can read