Web Table operations (WinRunner, TSL)
Service Functions – Windows Web GUI / WinRunner
Get cell text
# Attention! This is the low-level function which is supposed to be called in the loop # Has no obj_exists verification inside - take care about it outside public function wb_ht_get_cell_text(in table, in row, in col, out value) { auto rc,actual_text_length,count; auto col_count, row_count; value = ""; # Check if the col is out of range rc = tbl_get_cols_count(table, col_count); if (rc != E_OK) return(E_GENERAL_ERROR); if (col > col_count) { value = ""; return(E_OK); } # Check if the row is out of range rc = tbl_get_rows_count(table, row_count); if (rc != E_OK) return(E_GENERAL_ERROR); if (row > row_count) { value = ""; return(E_OK); } # Note: this block is the workaround for non-rectangular tables rc = web_obj_get_text(table, "#" & row, "#" & col, value); if (rc != E_OK) { value = ""; return(E_OK); } # Get text if cell exists rc = web_tbl_get_cell_data(table, "#" & row, "#" & col, 0, value, actual_text_length); if (rc != E_OK) rc = E_GENERAL_ERROR; return(rc); }
Get cell object
# Attention! This is the low-level function which is supposed to be called in the loop # Has no obj_exists verification inside - take care about it outside public function wb_ht_get_cell_obj(in table, in row, in col, in obj_class, in obj_loc, out obj_desc) { auto rc; auto col_count, row_count; obj_desc = ""; # Check if the col is out of range rc = tbl_get_cols_count(table, col_count); if (rc != E_OK) return(E_GENERAL_ERROR); if (col > col_count) { obj_desc = ""; return(E_NOT_FOUND); } # Check if the row is out of range rc = tbl_get_rows_count(table, row_count); if (rc != E_OK) return(E_GENERAL_ERROR); if (row > row_count) { obj_desc = ""; return(E_NOT_FOUND); } if (obj_loc == "") obj_loc = 0; # Get obj if cell exists rc = web_obj_get_child_item(table, row, col, obj_class, obj_loc, obj_desc); return(rc); }
Find column by RegEx
# Attention! This is the low-level function which is supposed to be called in the loop # Has no obj_exists verification inside - take care about it outside public function wb_ht_get_cell_col(in table, in header_row, in col_key_regex, out col) { auto rc, i, col_count; auto cell_text; rc = tbl_get_cols_count(table, col_count); if (rc != E_OK) return(E_GENERAL_ERROR); for (i=1;i<=col_count;i++) { rc = wb_ht_get_cell_text(table, header_row, i, cell_text); if (rc != E_OK) return(E_GENERAL_ERROR); rc = match(cell_text, col_key_regex); if (rc>0) { col = i; return(E_OK); } } return(E_NOT_FOUND); }
Find row by RegEx
# Attention! This is the low-level function which is supposed to be called in the loop # Has no obj_exists verification inside - take care about it outside public function wb_ht_get_cell_row(in table, in header_col, in row_key_regex, out row) { auto rc, i, row_count; auto cell_text; rc = tbl_get_rows_count(table, row_count); if (rc != E_OK) return(E_GENERAL_ERROR); for (i=1;i<=row_count;i++) { rc = wb_ht_get_cell_text(table, i, header_col, cell_text); if (rc != E_OK) return(E_GENERAL_ERROR); rc = match(cell_text, row_key_regex); if (rc>0) { row = i; return(E_OK); } } return(E_NOT_FOUND); }
Check table exists with defined text in expected cell
public function wb_ht_tbl_cell_exists(in location, in key_cell, in key_row, in key_column, out table_desc, in regex_flag) { auto rc; auto t_desc, cell_text; t_desc = "{class: object,MSW_class: html_table}"; GUI_desc_set_attr(t_desc, "location", location); rc = obj_exists(t_desc); if (rc != E_OK) return(E_NOT_FOUND); rc = wb_ht_get_cell_text(t_desc, key_row, key_column, cell_text); if (rc != E_OK) return(E_GENERAL_ERROR); if (cell_text == "") return(E_ITEM_NOT_FOUND); rc = str_text_test(str_trim_web(cell_text), key_cell, regex_flag); if (!rc) return(E_ITEM_NOT_FOUND); table_desc = t_desc; return(E_OK); }