Как нажать на элементы, которые расположены в ячейке таблицы Selenium - PullRequest
0 голосов
/ 29 марта 2020

Я написал метод, который получает текстовое значение из ячейки по номеру строки и имени столбца.

public String getValueFromCell(int rowNumber, String columnName){
        List<Map<String, WebElement>> rowsWithColumnsByHeadings = getRowsWithColumnsByHeadings();
        return rowsWithColumnsByHeadings.get(rowNumber - 1).get(columnName).getText();
    }

Но в ячейках есть значки (как вы можете видеть на скриншоте, это могут быть один, два или четыре значка) Icons with Xpath

И теперь я хочу нажать на все из них. Или щелкните по указанному c icon

И я должен признать, что эта таблица расположена на многих страницах с различным количеством значков в ячейке, и я хочу использовать этот метод для всех из них.

Как я могу изменить этот метод? Или что мне делать?

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Пожалуйста, проверьте решение ниже:

Если вы хотите щелкнуть по указанному c элементу значка, тогда вы можете использовать указатель rowNumber, чтобы щелкнуть по нему, просто отметьте, в противном случае используйте moveToElement, используя класс Action, прежде чем нажимать на элемент:

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();
    }

или если вы хотите щелкнуть все из них по одному:

    List<WebElement> elements = driver.findElements(By.className("mat-icon.mat-icon.notranslate.material-icon.mat-icon-n0-color"));
    elements.forEach(e -> {
        e.click();

    });
0 голосов
/ 29 марта 2020

Вот мое решение

public void getValueFromCell(int rowNumber, String columnName,String iconValue){
        List<Map<String, WebElement>> rowsWithColumnsByHeadings = getRowsWithColumnsByHeadings();
         rowsWithColumnsByHeadings.get(rowNumber - 1).get(columnName).findElement(By.xpath(String.format(iconXpath,iconValue))).click();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...