解决Selenium中java.lang.StringIndexOutOfBoundsException异常问题
解决Selenium EdgeDriver运行时的java.lang.StringIndexOutOfBoundsException异常
在Eclipse中运行Selenium EdgeDriver代码时,触发java.lang.StringIndexOutOfBoundsException异常,异常信息为Range [0, -1) out of bounds for length 7。
运行代码
package adipolipkg; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.edge.EdgeDriver; public class Simple { EdgeDriver driver; @Before public void men() { driver=new EdgeDriver(); driver.get("https://www.bmw.in/en/index.html"); } @Test public void sin () { driver.quit(); } }
相关截图展示了项目包结构、代码内容以及具体的异常堆栈信息。
解决方案
匹配驱动与浏览器版本
这是触发该异常的最常见原因:- 打开Edge浏览器,进入「设置→关于Microsoft Edge」查看浏览器版本(比如125.x.x.x)
- 下载同主版本号的EdgeDriver,解压后将驱动文件放到系统PATH目录,或在代码中指定路径
- 若使用ChromeDriver,操作逻辑一致:查看Chrome版本,下载对应版本的驱动
显式指定驱动路径
不想配置系统PATH的话,可在代码中直接指定驱动位置,示例:@Before public void men() { // 替换为你的EdgeDriver实际路径 System.setProperty("webdriver.edge.driver", "C:\\drivers\\msedgedriver.exe"); driver = new EdgeDriver(); driver.get("https://www.bmw.in/en/index.html"); }更新Selenium依赖
若用Maven/Gradle管理依赖,确保Selenium版本为4.x系列稳定版,避免版本兼容问题。Maven依赖示例:<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.19.0</version> </dependency>清理项目缓存
在Eclipse中点击「项目→清理」,选择当前项目后确认,重新构建运行,排除旧缓存导致的异常
内容的提问来源于stack exchange,提问作者thensage
相关产品推荐
相关产品推荐

