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

使用JavaScript在Selenium中获取jQuery对象时遇异常求助

问题解决:Selenium获取表单配置时的两个错误

1. StaleElementReferenceError:元素已脱离DOM

你没直接引用DOM元素却触发这个错误,核心原因是Bar.options内部包含了DOM元素的引用。Selenium在把脚本执行结果序列化返回给客户端时,会自动处理这些DOM元素引用,一旦这些元素被页面重新渲染或移除,就会抛出这个错误。

解决办法:不要直接返回Bar.options,而是提取你需要的纯数据字段,避开DOM元素引用。示例:

const foo = await driver.executeScript(`
  const options = Bar.options;
  // 只提取非DOM相关的配置字段
  return {
    donationAmount: options.donationAmount,
    currencyType: options.currencyType,
    paymentMethods: options.paymentMethods
  };
`);

2. JavascriptError:循环对象值

这个错误是因为Bar.options内部存在循环引用的对象结构(比如对象A的属性指向对象B,对象B又反向指向对象A)。Selenium无法序列化这种循环结构的对象,因此抛出该错误。

解决办法:在页面端将对象转为JSON字符串(同时处理循环引用),再在客户端解析。示例:

const fooStr = await driver.executeScript(`
  return JSON.stringify(Bar.options, (key, value) => {
    // 遇到循环引用的属性时,只保留标识性字段(比如ID)而非整个对象
    if (typeof value === "object" && value !== null && key === "parentElement") {
      return value.id;
    }
    return value;
  });
`);
const foo = JSON.parse(fooStr);

也可以直接在脚本里手动剥离循环引用部分,只返回无循环的纯数据结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:29:57