Extract all “a” elements on web page with name is Send and save into csv

I am able to to get all the link, Need only links with attribute with name = Send and save into csv
extract url from page, parse ( / ) and get the values

2021-03-10 14:14:39.959 DEBUG testcase.list                        - 4: list = getAllLinksOnCurrentPage(true, [])
2021-03-10 14:14:42.312 DEBUG testcase.list                        - 5: println(list)
[chrome-extension://imjfaabknlfiohoipjddehfibjdmojlg/content/wait.js, https:/myurl.com/Check/css-table.css, https:/myurl.com/Check/jquery-1.11.1.min.js, https:/myurl.com/Check/Check.js, 
https:/myurl.com/Check/RunUpdate?id=39190&requestId=1615407138468&ln=1000043845, https:/myurl.com/Check/RunUpdate?id=39191&requestId=1615407138493&ln=1000043845, https://myurl.com/Listing/GetlistData?listnumber=1000043833, 
https:/myurl.com/Check/RunUpdate?id=39192&requestId=1615407138468&ln=1000043833, 
https:/myurl.com/Check/RunUpdate?id=39193&requestId=1615407138493&ln=1000043833, 
https://myurl.com/Listing/GetlistData?listnumber=1000043832, 
https:/myurl.com/Check/RunUpdate?id=39194&requestId=1615407138468&ln=1000043832, 
https:/myurl.com/Check/RunUpdate?id=39237&requestId=1615407138493&ln=1000043833,
https:/myurl.com/Check/RunUpdate?id=39238&requestId=1615407138493&ln=1000043832, 
https:/myurl.com/Check/RunUpdate?id=39239&requestId=1615407138468&ln=1000043832]

Want only digit out of urls id=39239&requestId=1615407138468&ln=1000043832'

39239, 1615407138468, 1000043832  to be saved into csv

tried

String url = "list"
String getQueryString = url.split("\\?")[1]
String[] getFields = getQueryString.split("&")
Map<String, String> fieldValueMap = new HashMap<String, String>()
for(String field : getFields) {	fieldValueMap.put(field.split("=")[0], field.split("=")[1])}
println fieldValueMap.get("field3")

Reason:
java.lang.ArrayIndexOutOfBoundsException: 1

Please try the following code as a Test Case, where I used Java Stream API extensively to make it clean.

def urls = [
	"https://myurl.com/Check/RunUpdate?id=39190&requestId=1615407138468&ln=1000043845",
	"https://myurl.com/Check/RunUpdate?id=39191&requestId=1615407138493&ln=1000043845",
	"https://myurl.com/Listing/GetlistData?listnumber=1000043833",
	"https://myurl.com/Check/RunUpdate?id=39192&requestId=1615407138468&ln=1000043833",
	"https://myurl.com/Check/RunUpdate?id=39193&requestId=1615407138493&ln=1000043833",
	"https://myurl.com/Listing/GetlistData?listnumber=1000043832",
	"https://myurl.com/Check/RunUpdate?id=39194&requestId=1615407138468&ln=1000043832",
	"https://myurl.com/Check/RunUpdate?id=39237&requestId=1615407138493&ln=1000043833",
	"https://myurl.com/Check/RunUpdate?id=39238&requestId=1615407138493&ln=1000043832",
	"https://myurl.com/Check/RunUpdate?id=39239&requestId=1615407138468&ln=1000043832"
]

List<Map<String, String>> result = []
urls.stream()
	.map({ str -> 
		new URL(str) })
	.filter({ url ->
		url.getPath() == '/Check/RunUpdate'
	})
	.forEach({ url ->
		Map kv = [:]
		url.getQuery().split('&').each { keyValue ->
			def sp = keyValue.split('=')
			kv.put(sp[0], sp[1])
		}
		result.add(kv)
	})
//println result
result.forEach({ map ->
	println map
})

This gave me the following output in the console:

2021-03-11 15:23:04.391 DEBUG testcase.TCa                             - 5: stream().forEach({ java.lang.Object map -> ... })
[id:39190, requestId:1615407138468, ln:1000043845]
[id:39191, requestId:1615407138493, ln:1000043845]
[id:39192, requestId:1615407138468, ln:1000043833]
[id:39193, requestId:1615407138493, ln:1000043833]
[id:39194, requestId:1615407138468, ln:1000043832]
[id:39237, requestId:1615407138493, ln:1000043833]
[id:39238, requestId:1615407138493, ln:1000043832]
[id:39239, requestId:1615407138468, ln:1000043832]
2021-03-11 15:23:04.414 INFO  c.k.katalon.core.main.TestCaseExecutor   - END Test Cases/TCa
1 Like

Thanks @kazurayam facing issue

List<String> allinks = WebUI.getAllLinksOnCurrentPage(true, [])
println ('Total links on page: ' + allinks.size())
		
//for(String alink : allinks) {
//	println alink;
// }

   List<Map<String, String>> result = []
   allinks.stream()
	   .map({ str ->
		   new URL(str) })
	   .filter({ url ->
		   url.getPath() == '/Check/RunUpdate'
	   })
	   .forEach({ url ->
		   Map kv = [:]
		   url.getQuery().split('&').each { keyValue ->
			   def sp = keyValue.split('=')
			   kv.put(sp[0], sp[1])
		   }
		   result.add(kv)
	   })
   //println result
   result.forEach({ map ->
	   println map
   })
2021-03-15 16:42:51.030 DEBUG testcase.Prodlist - Copy                 - 5: println("Total links on page: " + allinks.size())
Total links on page: 104
2021-03-15 16:42:51.036 DEBUG testcase.Prodlist - Copy                 - 6: result = []
2021-03-15 16:42:51.037 DEBUG testcase.Prodlist - Copy                 - 7:  }).forEach({ java.lang.Object url -> ... })

Sorry, I do not understand you.

Please help yourself.