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

Selenium ChromeDriver执行JavaScript时Runtime.evaluate未知错误求助

解决Selenium ChromeDriver执行JavaScript时的Runtime.evaluate错误

嘿,我来帮你捋捋这个问题——你遇到的Runtime.evaluate错误,大概率是因为JavaScript代码的格式或者转义处理出了问题,尤其是你在$.ajax的data里嵌套的那段类Python代码,很可能破坏了JS的语法结构。之前你看的Unexpected token var的解决方案不适用,是因为你的问题根源不一样。

下面是几个具体的修复方向,你可以一步步试:

1. 先把嵌套字符串的转义问题搞定

你原来的代码里,data中的code值包含了换行、双引号这些特殊字符,在JS字符串里如果转义不当,直接会让解析器报错。我建议你用JS的**模板字符串(反引号`)**来包裹这段Python代码,这样就不用反复转义双引号和换行,可读性和正确性都更高。

比如把你的代码改成这样:

$.ajax({
    type: "POST",
    data: {
        "code": `a=input("");
printf("Part A\n");
SA=6*a**2;  // 这里提醒下:Python里^是按位异或,幂运算要用**哦
printf("SA = %d\n",SA);
r1=(6*a**2/(4*pi))**(1/2);
printf...`
    },
    // 别忘了补全url、回调函数这些必填项!
    url: "你的接口地址",
    success: function(res) {
        console.log("请求成功:", res);
    },
    error: function(err) {
        console.error("请求炸了:", err);
    }
});

2. 确保Selenium执行JS的姿势正确

在Selenium里执行JS,一定要用execute_script()方法,而且要保证传递的JS是完整可独立运行的。另外,如果你的目标页面没引入jQuery,直接用$会报错,这时候可以换成原生的fetch API,不用依赖jQuery:

用jQuery的Python代码示例

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("你的目标页面URL")  # 先加载页面,确保jQuery已引入

# 完整的JS代码
js_code = '''
$.ajax({
    type: "POST",
    url: "https://your-api-url.com",
    data: {
        "code": `a=input("");
printf("Part A\\n");
SA=6*a**2;
printf("SA = %d\\n",SA);
r1=(6*a**2/(4*Math.PI))**(1/2);
printf("r1 = %f\\n",r1);`
    },
    dataType: "json",
    success: function(res) {
        console.log(res);
    },
    error: function(xhr, status, err) {
        console.error(err);
    }
});
'''

driver.execute_script(js_code)

用原生fetch的替代方案(无jQuery依赖)

js_code = '''
fetch("https://your-api-url.com", {
    method: "POST",
    headers: {
        "Content-Type": "application/x-www-form-urlencoded",
    },
    body: new URLSearchParams({
        "code": `a=input("");
printf("Part A\n");
SA=6*a**2;
printf("SA = %d\n",SA);
r1=(6*a**2/(4*Math.PI))**(1/2);
printf...`
    })
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
'''

driver.execute_script(js_code)

3. 检查ChromeDriver和浏览器版本兼容性

如果上面的格式都改对了还是报错,那大概率是版本不兼容的锅——Chrome浏览器和ChromeDriver的版本必须对应,差太多就会出现各种奇怪的Runtime错误。建议你把ChromeDriver升级到和当前Chrome浏览器完全匹配的版本。

最后给你个小技巧:先在Chrome开发者工具的Console面板里把你的JS代码跑一遍,确认能正常执行后再放到Selenium里,这样能快速排除代码本身的问题,定位是Selenium的配置还是JS的问题。

内容的提问来源于stack exchange,提问作者Aditya Jyoti Paul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:41:52