You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:频繁触发JsonException,无法启动RemoteWebDriver

问题分析与解决方案

错误详情

org.openqa.selenium.json.JsonException: 无法从字符'E'确定类型。最后读取的1个字符是: E
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'EX-CON-2255C', ip: '10.185.18.14', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.16.1'
Driver info: driver.version: RemoteWebDriver
    at org.openqa.selenium.json.JsonInput.peek(JsonInput.java:122)
    at org.openqa.selenium.json.JsonTypeCoercer.lambda$null$6(JsonTypeCoercer.java:140)
    at org.openqa.selenium.json.JsonTypeCoercer.coerce(JsonTypeCoercer.java:126)
    at org.openqa.selenium.json.Json.toType(Json.java:69)
    at org.openqa.selenium.json.Json.toType(Json.java:55)
    at org.openqa.selenium.json.Json.toType(Json.java:50)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:87)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:609)
    at org.openqa.selenium.remote.RemoteWebDriver.getScreenshotAs(RemoteWebDriver.java:295)
    at qxhresponsive.PinkStrawberry.utilities.ExtentReporter.getScreenShot(ExtentReporter.java:195)
    at qxhresponsive.PinkStrawberry.utilities.ExtentReporter.reportStep(ExtentReporter.java:138)
    at qxhresponsive.PinkStrawberry.pages.ConvivaPage.navigateToConviva(ConvivaPage.java:61)
    at qxhresponsive.PinkStrawberry.tests.ConvivaTest.ZSMED_T9004_MP_8807_US_Web_New_Ventures_Program_Guide_Automation_of_GA_and_Conviva_Live_channes_from_first_column(ConvivaTest.java:100)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

已知背景:已尝试添加等待时间,场景中同时使用Android WebDriver和WebDriver

可能的原因及解决方法

1. Selenium与JDK版本不兼容

你使用的Selenium 3.141.59发布于2018年,对Java 11的支持不完善,JSON解析模块容易出现此类异常。

  • 解决:升级Selenium版本,建议直接升级到Selenium 4.x(对Java 11+支持更全面),或者至少升级到Selenium 3的后续维护版本。

2. 多Driver实例冲突

同时运行Android WebDriver和WebDriver两个实例时,可能出现HTTP请求/响应混流,导致JSON解析器读取到错误的响应内容。

  • 解决:
    • 每个测试用例仅初始化一个Driver实例,测试结束后立即调用quit()释放资源
    • 若必须同时使用,为两个实例配置独立的HttpCommandExecutor,避免共享连接池

3. Driver状态异常导致截图失败

错误触发于getScreenshotAs调用,说明此时RemoteWebDriver可能处于未就绪状态(会话失效、页面未加载完成等)。

  • 解决:
    • 截图前先校验会话有效性:if (driver.getSessionId() != null)
    • 替换固定等待为显式等待,等待页面核心元素加载完成后再执行截图
    • 捕获截图异常,会话失效时重新初始化Driver

4. 响应编码问题

RemoteWebDriver接收的JSON响应编码异常,导致解析器读取到非法字符。

  • 解决:
    • 检查Selenium Grid或远程Driver服务器的字符编码配置,确保返回UTF-8格式的响应
    • 初始化RemoteWebDriver时,自定义HttpCommandExecutor并强制设置响应编码为UTF-8

内容的提问来源于stack exchange,提问作者Harish R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:11:15