如何在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
相关产品推荐
相关产品推荐

