Selenium调用getPageSource时出现Runtime.callFunctionOn反序列化错误求助
调用
getPageSource()时出现反序列化错误的可能原因 可能的触发原因:
- 页面内容异常:页面HTML体积过大,或者包含无法被Selenium序列化器解析的特殊字符、编码异常内容,导致
Runtime.callFunctionOn返回的结果无法正常反序列化。getPageSource()依赖CDP接口获取DOM,异常内容会打破序列化逻辑。 - 环境兼容性问题:尽管Chrome和ChromeDriver版本一致(123.0.6312.122),但Linux环境下的特定版本组合可能存在细微的CDP通信bug,引发数据序列化失败。
- 页面未稳定加载:
waitForPageToLoad方法可能未正确等待页面DOM完全稳定,调用getPageSource()时页面仍有动态内容在加载/修改,导致获取的DOM处于不完整状态,进而触发反序列化错误。 - Selenium版本适配问题:当前使用的Selenium 4.16.1可能对Chrome 123的CDP接口支持不完善,底层调用的序列化逻辑存在适配缺陷。
排查与解决建议:
- 先访问极简测试页面(如
example.com)调用getPageSource(),若正常则说明原页面存在特殊内容问题,可尝试过滤或处理页面中的异常字符。 - 升级Selenium版本至4.18.x系列(官方推荐适配Chrome 122-124的版本),验证兼容性问题是否解决。
- 优化等待逻辑:改用显式等待关键元素加载完成,或设置
pageLoadStrategy为eager,确保DOM稳定后再获取源码。 - 在ChromeDriver启动参数中添加
--disable-features=VizDisplayCompositor,部分Linux环境下可缓解此类序列化异常。
内容的提问来源于stack exchange,提问作者Yonoss
相关产品推荐
相关产品推荐

