TestNG下Firefox Driver不执行@Test方法 Chrome运行正常
问题原因分析
你遇到的执行差异核心是@BeforeClass方法内的驱动初始化代码顺序错误:
- Selenium初始化浏览器驱动的强制要求是:必须先设置对应浏览器驱动路径的系统属性,再实例化对应Driver类,你当前的Firefox初始化代码把两个步骤顺序完全颠倒了。
// 你当前的错误代码顺序 driver = new FirefoxDriver(); System.setProperty("webdriver.gecko.driver", "geckodriver");
上述代码的执行逻辑是:尝试实例化FirefoxDriver时,Selenium还未读取到geckodriver的路径配置,会直接触发运行时异常。TestNG的执行机制中如果@BeforeClass等前置方法抛出未捕获异常,会直接标记当前测试类的所有@Test方法为跳过状态,不会进入@Test的执行流程。
而你的Chrome测试代码必然是先设置webdriver.chrome.driver系统属性、再实例化ChromeDriver,执行逻辑符合要求,所以运行正常,这就是两个浏览器执行表现差异的核心原因。
修复方案
调整@BeforeClass内的代码顺序即可:
@BeforeClass public void beforeClass() { System.out.println("Running TestFireFox Class"); // 先设置驱动路径系统属性 System.setProperty("webdriver.gecko.driver", "geckodriver"); // 再实例化FirefoxDriver driver = new FirefoxDriver(); }
补充说明
调整顺序后如果还是无法执行,可核对geckodriver和本地安装的Firefox版本的适配关系,驱动和浏览器版本不兼容也可能触发类似异常。
内容的提问来源于stack exchange,提问作者peterkk
相关产品推荐
相关产品推荐

