首页 > 解决方案 > Groovy 闭包不处理异常

问题描述

在 Katalon Studio 中,我正在尝试编写一个带有闭包的测试用例,以帮助处理支持的选择器的限制。我的代码是这样的:

def findDataRows = {
    WebElement container 
    try {
        container = driver.findElement(By.cssSelector('.tab-pane.active'))
    }   
    catch (NoSuchElementException ex) { 
        container = driver.findElement(By.cssSelector('.dataTables_wrapper'))
    }
    String dataRowsSelector = '.dataTables_scrollBody tbody tr:not(.dataTables_empty):not(.group)'

    List<WebElement> tableRows = container.findElements(By.cssSelector(dataRowsSelector)),
        dataRows = new LinkedList<WebElement>()
    for (WebElement tr : tableRows) {
        if (tr.findElements(By.cssSelector('.dataTables_empty')).empty) {
            dataRows.add(tr)
        }
    }
    dataRows
}

出于某种原因,尽管块存在,但编译器并没有catch处理NoSuchElementException被抛出的块,并设置container为我的测试用例中保证存在的元素,而是简单地抱怨块。try

如何让 Groovy 处理闭包中的异常?

注意:它应该return dataRows

标签: groovykatalon-studio

解决方案


推荐阅读