Selenium Java遇unknown error: unexpected command response错误求助
Selenium与Chrome版本不匹配导致的WebDriverException问题解决
问题描述
在Eclipse中使用Selenium时频繁报错,此前因加载问题将Chrome降级至102版本,现在出现无法理解的新错误,以下是控制台报错信息及测试脚本:
控制台报错信息
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: unexpected command response (Session info: chrome=103.0.5060.114) Build info: version: '4.3.0', revision: 'a4995e2c09*' System info: host: 'AWAIS-PC', ip: '192.168.1.62', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '18.0.1' Driver info: org.openqa.selenium.chrome.ChromeDriver Command: [b494462d4f7752feaa9aeeb67f469204, findElement {using=id, value=wzrk-cancel}] Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 103.0.5060.114, chrome: {chromedriverVersion: 102.0.5005.61 (0e59bcc00cc4..., userDataDir: C:\Users\WRP\AppData\Local\...}, goog:chromeOptions: {debuggerAddress: localhost:54170}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: WINDOWS, proxy: Proxy(), se:cdp: ws://localhost:54170/devtoo..., se:cdpVersion: 103.0.5060.114, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true} Session ID: b494462d4f7752feaa9aeeb67f469204 at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:200) at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:133) at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:53) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:184) at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:167) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:142) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:569) at org.openqa.selenium.remote.ElementLocation$ElementFinder$2.findElement(ElementLocation.java:162) at org.openqa.selenium.remote.ElementLocation.findElement(ElementLocation.java:60) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:387) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:379) at org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:197) at org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:193) at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208) at First_Test.Practice_First.main(Practice_First.java:52)
测试脚本
WebDriverManager.chromedriver().driverVersion("102.0.5005.61").setup(); WebDriver driver = new ChromeDriver(); WebDriverWait waits=new WebDriverWait (driver, Duration.ofSeconds(13)); //driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); driver.get("https://www.ounass.ae/"); //Thread.sleep(3000); driver.manage().window().maximize(); //Thread.sleep(3000); // String originalWindow= driver.getWindowHandle(); // Thread.sleep(5000); waits.until(ExpectedConditions.visibilityOfElementLocated(By.id("wzrk-cancel"))); driver.findElement(By.id("wzrk-cancel")).click(); // driver.findElement(By.xpath("//button[@id='wzrk-cancel']")).click(); waits.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a[href*='/men']"))); driver.findElement(By.cssSelector("a[href*='/men']")).click(); JavascriptExecutor Js1 = (JavascriptExecutor) driver; Js1.executeScript("window.scrollBy(0,2500)");
原因分析
从报错信息的Session info: chrome=103.0.5060.114和chromedriverVersion: 102.0.5005.61可以明确:Chrome浏览器已自动更新至103版本,但你指定使用的ChromeDriver还是102版本,两者版本不匹配,导致Selenium与浏览器之间无法正常通信,触发unknown error: unexpected command response异常。
解决方案
方案1:升级ChromeDriver至与当前Chrome匹配的版本
查看当前Chrome浏览器版本(103.0.5060.114),下载对应版本的ChromeDriver(如103.0.5060.134),修改脚本中指定的版本号:
WebDriverManager.chromedriver().driverVersion("103.0.5060.134").setup();
方案2:锁定Chrome浏览器版本为102
- 关闭Chrome自动更新:打开Chrome→设置→关于Chrome,关闭自动更新功能;
- 若Chrome已自动更新到103,卸载当前版本,重新下载安装Chrome 102版本;
- 保持ChromeDriver版本为102.0.5005.61,脚本无需修改。
方案3:让WebDriverManager自动匹配版本
去掉手动指定driverVersion的代码,WebDriverManager会自动检测当前Chrome版本并下载对应的ChromeDriver,简化脚本:
WebDriverManager.chromedriver().setup();
额外优化建议
- 将等待条件从
visibilityOfElementLocated改为elementToBeClickable,确保元素可见且可点击,避免点击失败:waits.until(ExpectedConditions.elementToBeClickable(By.id("wzrk-cancel"))); - 避免同时使用隐式等待和显式等待,防止等待逻辑冲突(你的脚本已经注释了隐式等待,这点做得很好)。
内容的提问来源于stack exchange,提问作者Zamir Sultan
相关产品推荐
相关产品推荐

