Escribí método que obtiene un valor de texto de celular por número de fila y el nombre de la columna.
public String getValueFromCell(int rowNumber, String columnName){
List<Map<String, WebElement>> rowsWithColumnsByHeadings = getRowsWithColumnsByHeadings();
return rowsWithColumnsByHeadings.get(rowNumber - 1).get(columnName).getText();
}
Pero hay iconos en las células (como se puede ver en la imagen, no puede haber una, dos o cuatro iconos)
Y ahora quiero hacer clic en todos ellos. O haga clic en el icono específico
Y debo admitir que esta tabla se encuentra en muchas páginas con diferente número de iconos en la célula, y quiero utilizar este método para todos ellos.
¿Cómo puedo modificar este método? O ¿qué debo hacer?
Por favor, consulte más abajo solución:
Si desea hacer clic en el elemento icono específico, puede utilizar el índice rowNumber hacer clic en él, sólo echa de lo contrario usar moveToElement usando clase Action antes mientras se hace clic sobre el elemento:
public String getValueFromCell(int rowNumber, String columnName){
List<Map<String, WebElement>> rowsWithColumnsByHeadings = getRowsWithColumnsByHeadings();
List<WebElement> elements = driver.findElements(By.className("mat-icon.mat-icon.notranslate.material-icon.mat-icon-n0-color"))
elements.get(rowNumber).click()
return rowsWithColumnsByHeadings.get(rowNumber - 1).get(columnName).getText();
}
o si desea hacer clic en todos ellos, uno por uno:
List<WebElement> elements = driver.findElements(By.className("mat-icon.mat-icon.notranslate.material-icon.mat-icon-n0-color"));
elements.forEach(e -> {
e.click();
});