如何单击表硒单元格中的元素

时间:2020-03-29 11:28:25

标签: java selenium selenium-webdriver xpath pageobjects

我写了一种方法,该方法通过行号和列名从单元格获取文本值。

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

但是单元格中有图标(如屏幕截图所示,可以有一个,两个或四个图标) Icons with Xpath

现在我要单击所有这些。或点击特定图标

而且我必须承认该表位于单元格中具有不同图标数量的许多页面上,并且我想对所有这些对象都使用此方法。

如何修改此方法?或者我该怎么办?

2 个答案:

答案 0 :(得分:1)

请检查以下解决方案:

如果要单击特定的图标元素,则可以使用rowNumber索引单击它,只需在单击该元素之前检查是否已使用Action类使用moveToElement即可:

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

    });

答案 1 :(得分:0)

这是我的解决方法

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