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

Java/Eclipse/Selenium Page Factory测试提示找不到main方法的解决求助

解决Selenium测试类"找不到main方法"的问题

咱先搞明白为啥会出这个错:你用的是Selenium+Page Factory搭测试框架,这类测试根本不需要手动写main方法!它是靠TestNG或者JUnit这类测试框架来驱动执行的。如果你直接用Eclipse的「Run As > Java Application」运行,Eclipse会默认找main方法,自然就报错;就算硬塞个main方法进去,也不符合测试框架的执行逻辑,所以测试还是跑不起来。

下面给你两种解决方案,优先推荐第一种,是行业通用的做法:

一、用TestNG驱动测试(推荐)

这是正规测试框架的玩法,完全不需要main方法,步骤如下:

1. 给项目加TestNG依赖

如果是Maven项目,往pom.xml里加这段依赖:

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.8.0</version>
    <scope>test</scope>
</dependency>

要是普通Java项目,右键项目 → 「Build Path」→「Add Libraries」→「TestNG」,跟着向导走完就行。另外别忘了在Eclipse里装TestNG插件,去Eclipse Marketplace搜TestNG安装就行。

2. 把测试类改成TestNG风格

给你写个Page Factory的示例,一看就懂:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.PageFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

// 先写个Page类,比如百度首页
class BaiduHomePage {
    WebDriver driver;
    
    public BaiduHomePage(WebDriver driver) {
        this.driver = driver;
        // 初始化PageFactory,把元素和页面绑定
        PageFactory.initElements(driver, this);
    }
    
    // 这里可以定义页面元素和操作,比如@FindBy注解定位搜索框
}

// 测试类
public class BaiduSearchTest {
    WebDriver driver;
    BaiduHomePage baiduPage;

    // 每个测试用例执行前初始化浏览器
    @BeforeMethod
    public void setUp() {
        // 注意替换成你自己的ChromeDriver路径
        System.setProperty("webdriver.chrome.driver", "D:/chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://www.baidu.com");
        baiduPage = PageFactory.initElements(driver, BaiduHomePage.class);
    }

    // 真正的测试用例,用@Test标记
    @Test
    public void testSearchFunction() {
        // 这里写你的测试逻辑,比如调用Page类的方法输入关键词、点击搜索
        System.out.println("正在执行百度搜索测试");
    }

    // 每个测试用例执行后关闭浏览器
    @AfterMethod
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }
}

3. 正确运行测试

在Eclipse里右键测试类 → 「Run As」→「TestNG Test」,TestNG会自动帮你处理测试的启动、执行、收尾,完全不用管main方法。

二、非要用main方法运行(仅临时调试用)

如果只是临时调试代码,不想用测试框架,那可以手动在main里模拟测试流程:

public class BaiduSearchTest {
    public static void main(String[] args) {
        WebDriver driver = null;
        try {
            System.setProperty("webdriver.chrome.driver", "D:/chromedriver.exe");
            driver = new ChromeDriver();
            driver.get("https://www.baidu.com");
            BaiduHomePage baiduPage = PageFactory.initElements(driver, BaiduHomePage.class);
            
            // 写你的测试逻辑
            System.out.println("临时调试测试");
            
        } catch (Exception e) {
            // 捕获异常打印日志
            e.printStackTrace();
        } finally {
            // 最后一定要关闭浏览器
            if (driver != null) {
                driver.quit();
            }
        }
    }
}

不过这种方式没有测试框架的报告、断言管理、用例分组这些功能,只适合临时测代码,别用来写正式测试用例。

最后提醒几个坑

  • ChromeDriver版本要和你的Chrome浏览器版本匹配,不然浏览器启动会失败
  • Page类里一定要用PageFactory.initElements(driver, this)初始化元素,不然定位不到
  • 要是TestNG运行没反应,检查下插件是不是装对了,依赖有没有引入成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:56:28