使用Selenium调用Chrome浏览器时出现IllegalStateException异常的问题求助
java.lang.IllegalStateException(ChromeDriver路径未配置)的问题 先来看你遇到的错误详情:
Exception in thread "main" java.lang.IllegalStateException: 驱动程序可执行文件的路径必须通过webdriver.chrome.driver系统属性进行设置;更多信息请参阅https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver。最新版本可从https://chromedriver.storage.googleapis.com/index.html下载
at org.openqa.selenium.internal.Require$StateChecker.nonNull(Require.java:280)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:135)
at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:38)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:231)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:437)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:127)
at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:46)
at Selintroduction.main(Selintroduction.java:17)
这个错误本质是Selenium找不到ChromeDriver的可执行文件,必须明确告诉它驱动的位置才行,给你三种靠谱的解决办法:
方法1:代码内直接设置系统属性
在初始化ChromeDriver的代码前面,加上一行设置系统属性的代码,指定ChromeDriver的绝对路径:
// Windows系统示例(注意用双反斜杠或正斜杠) System.setProperty("webdriver.chrome.driver", "C:\\Users\\YourName\\Downloads\\chromedriver.exe"); // Mac/Linux系统示例 System.setProperty("webdriver.chrome.driver", "/Users/YourName/Downloads/chromedriver"); // 然后再初始化驱动 ChromeDriver driver = new ChromeDriver();
⚠️ 注意:ChromeDriver的版本要和你本地安装的Chrome浏览器版本匹配,不然会出现兼容性问题。
方法2:配置系统环境变量PATH
把ChromeDriver所在的文件夹路径添加到系统的PATH环境变量中,这样Selenium会自动在PATH里查找驱动,不用在代码里设置路径:
- Windows:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量的
PATH中添加ChromeDriver所在文件夹的路径,比如C:\chromedriver-folder - Mac/Linux:打开终端,编辑
~/.bashrc或~/.zshrc文件,添加一行:
然后执行export PATH=$PATH:/path/to/your/chromedriver/foldersource ~/.bashrc(或source ~/.zshrc)使配置生效。
方法3:用WebDriverManager自动管理驱动(推荐)
如果用Maven/Gradle等构建工具,可以引入webdrivermanager依赖,它会自动下载对应版本的ChromeDriver,不用手动管理路径和版本:
Maven依赖
<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.6.3</version> </dependency>
Gradle依赖
implementation 'io.github.bonigarcia:webdrivermanager:5.6.3'
然后代码里只需要先执行setup,再初始化驱动:
WebDriverManager.chromedriver().setup(); ChromeDriver driver = new ChromeDriver();
内容的提问来源于stack exchange,提问作者Siddhesh

