首次运行Selenium程序遇模块找不到错误,求技术解决方案
解决Selenium运行时模块缺失问题
问题描述
运行以下首个Selenium程序时:
package selenium; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class FirstSeleniumProject { public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.chrome.driver", "C:\\Users\\amar\\Documents\\chromedriver\\chromedriver.exe"); WebDriver chrome = new ChromeDriver(); chrome.get("https://www.google.com"); } }
先后出现两个模块缺失错误:
Error occurred during initialization of boot layer java.lang.module.FindException: Module processed.commons.exec not found- 移除链接
https://后,又出现Error occurred during initialization of boot layer java.lang.module.FindException: Module processed.async.http.client not found, required by org.seleniumhq.selenium.remote_driver
安装TestNG后问题未解决。
解决方案
1. 确保依赖完整且版本兼容
模块缺失本质是依赖包未正确引入或版本不匹配:
- 如果用Maven,在
pom.xml中添加正确的Selenium依赖(以Selenium 4.x为例):
<dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.15.0</version> </dependency> </dependencies>
- 如果用Gradle,在
build.gradle中添加:
dependencies { implementation 'org.seleniumhq.selenium:selenium-java:4.15.0' }
执行依赖同步,确保所有关联依赖(包括commons-exec、async-http-client等)都被自动下载。
2. 替换手动驱动配置为WebDriverManager
手动设置驱动路径容易引发路径错误,WebDriverManager能自动管理驱动版本,同时避免部分依赖冲突:
修改代码如下:
package selenium; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import io.github.bonigarcia.wdm.WebDriverManager; public class FirstSeleniumProject { public static void main(String[] args) { WebDriverManager.chromedriver().setup(); WebDriver chrome = new ChromeDriver(); chrome.get("https://www.google.com"); chrome.quit(); // 记得关闭浏览器 } }
同时需要在依赖中添加WebDriverManager(Maven示例):
<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.6.0</version> </dependency>
3. 排查模块化项目设置
如果你的项目启用了Java模块(存在module-info.java),需要在模块声明中添加对Selenium相关模块的依赖:
module your.module.name { requires org.seleniumhq.selenium.seleniumjava; requires io.github.bonigarcia.wdm; }
如果不需要模块化,直接删除module-info.java,切换为非模块化项目模式,能避免大部分模块查找异常。
4. 移除不必要的依赖
TestNG是测试框架,你当前的代码只是运行main方法,不需要TestNG依赖,直接移除相关配置,减少依赖冲突的可能性。
内容的提问来源于stack exchange,提问作者n3cw4rr10r
相关产品推荐
相关产品推荐

