首页 > 解决方案 > 一种捕获大多数 try catch 语句的方法

问题描述

在我的 UI java 测试框架中,我有很多方法正在尝试捕获元素操作,如单击、发送键等,并在操作成功时返回 true,在发生任何异常时返回 false。我想知道是否有任何更聪明的方法可以将方法作为参数传递,并且在该方法中使用 try catch 语句围绕该代码。这样代码就可以更简单、更清晰地阅读(可能是 Java 8 功能接口)。

 public boolean expandPanel(String panelHeading) {
        boolean panelFound = false;
        try {
            getElement(PanelHeadings.fromString(panelHeading)).click();
            panelFound = true;
        } catch (Exception e) {
            panelFound = false;
        }
        return panelFound;
    }

我确实尝试过创建一个动作类并为 click、sendKeys 等定义不同的方法。但是有没有办法让我只有一个 try catch 方法并将代码或行为传递给该方法。

public boolean expandPanel(String panelHeading) {
       return actions.click(getElement(PanelHeadings.fromString(panelHeading)));
}

public class WebElementActions {
public Boolean click(WebElement element) {
        try {
            element.click();
            return true;
        } catch (Exception e) {
            log.error(e.getMessage());
            return false;
        }
    }
}

标签: javaseleniumfunctional-interface

解决方案


你可以做类似的事情

public boolean executeSafely(Runnable action) {
    try {
        action.run();
        return true;
    } catch (Exception x) {
        return false;
   } 
}

然后用return executeSafely(element::click).


推荐阅读