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

类扩展后Selenium登录测试无法执行问题求助

问题分析与修复:Selenium+TestNG登录测试未执行登录操作

核心问题总结

URL能正常打开,但登录逻辑未执行,核心原因是TestNG注解方法不符合规范,导致测试方法未被触发,同时存在变量作用域错误导致的潜在空指针问题。

具体问题点及修复

1. BaseTest类的@BeforeTest方法错误

  • 错误使用main方法作为@BeforeTest标注的方法:TestNG的测试生命周期不依赖main方法,标注@BeforeTest的main方法不会被TestNG执行(你看到URL打开可能是手动运行了main方法,而非TestNG触发)。
  • 方法签名不符合TestNG要求:@BeforeTest方法需为非static、无参数、返回值void。
  • driver变量作用域错误:初始化时声明了局部WebDriver driver,导致类的静态driver成员未被赋值,子类调用时会出现NullPointerException。

修复后的BaseTest:

package base;

import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeTest;

public class BaseTest {
    public static WebDriver driver;
    public static Properties props = new Properties();
    
    @BeforeTest
    public void setup() throws IOException {
        if(driver == null) {
            FileReader fr = new FileReader("C:\\Users\\stefa\\eclipse-workspace\\New folder\\selenium\\src\\test\\resources\\configfiles\\config.properties");
            props.load(fr);
        }
        if(props.getProperty("browser").equalsIgnoreCase("chrome")) {
            // 直接给类静态driver赋值,避免局部变量覆盖
            driver = new ChromeDriver();  
            driver.get(props.getProperty("baseUrl"));
            driver.manage().window().maximize();
        }
    }
}

2. NewTest类的@Test方法不符合规范

  • @Test方法不能是static:TestNG无法执行static修饰的测试方法。
  • 方法带String[] args参数:TestNG默认不执行带参数的@Test方法(无DataProvider配置时)。

修复后的NewTest:

package testcase;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.testng.annotations.Test;

import base.BaseTest;

public class NewTest extends BaseTest {
    @Test
    public void loginTest() {
        WebElement userName = driver.findElement(By.id("user-name"));
        userName.sendKeys("standard_user");
        
        WebElement password = driver.findElement(By.id("password"));
        password.sendKeys("secret_sauce");
        
        WebElement loginBtn = driver.findElement(By.id("login-button"));
        loginBtn.click();
    }
}

运行注意事项

  • 需通过TestNG方式运行(右键NewTest类 → Run As → TestNG Test),不要手动运行main方法。
  • 确保config.properties中baseUrl和browser配置正确,且ChromeDriver版本与本地Chrome浏览器版本匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:34:51