You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中通过Selenium与TestNG从另一个类获取字符串值

跨类获取字符串值的实现方案

方法1:直接访问静态变量

你已经将reportV1定义为public static类型变量,在其他类中可直接通过类名调用:

// 另一个类中的代码示例
public class AnotherClass {
    public void useReportName() {
        // 直接通过Add类名访问静态变量
        String reportName = Add.reportV1;
        System.out.println("获取到的报告名称:" + reportName);
    }
}

注意:必须保证Add类的export()方法已执行,reportV1才会被赋值,否则会得到null。

方法2:调用方法获取返回值

你的export()方法已返回reportV1,可在其他类中创建Add类实例并调用方法获取,但需注意@Test注解是测试框架(如TestNG/JUnit)标记测试方法用的,不建议在业务代码中直接调用,建议抽离单独的获取逻辑:

// 修改Add类,抽离获取逻辑
public class Add extends driver {
    public static String reportV1;

    // 单独的获取方法,不带@Test注解
    public String getReportName() throws InterruptedException, IOException {
        WebElement report1 = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#nReportName")));
        reportV1 = report1.getAttribute("value");
        return reportV1;
    }

    @Test
    public void export() throws InterruptedException, IOException {
        getReportName();
        if (reportV1.equals(reportV)) {
            System.out.println(" PASSED - Report Name: " + reportV1);
        } else {
            System.out.println(" FAILED - Report Name: " + reportV1);
            soft.assertTrue(false);
        }
        soft.assertAll();
    }
}

之后在其他类中调用抽离出的方法:

public class AnotherClass {
    public void getReportName() throws InterruptedException, IOException {
        Add addInstance = new Add();
        String reportName = addInstance.getReportName();
        System.out.println("通过方法获取的报告名称:" + reportName);
    }
}

关键注意点

  • 静态变量为全局共享,多线程或多实例场景下可能出现值被覆盖的问题,需谨慎使用。
  • 访问reportV1前必须确保获取逻辑已执行,否则会拿到null。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:10:19