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

在Automation Anywhere中用JavaScript访问DOM元素的问题咨询

我完全懂你遇到的痛点——在Automation Anywhere的「Run Script」里写JavaScript操作DOM时,突然蹦出「Document is undefined」的错误,明明普通变量操作都正常,偏偏碰DOM就不行。这其实是个环境适配的问题,我给你把问题根源和解决方案讲清楚,再附上完整的场景示例:

问题根源

你遇到的「Document is undefined」错误,核心原因是Automation Anywhere的普通「Run Script」组件是运行在独立的JavaScript引擎(比如Mozilla Rhino)中的,这个环境没有浏览器的DOM API(像document、window这些浏览器专属对象都不存在)。而你说的常规JS变量能正常运行,是因为那些属于JavaScript基础语法,和浏览器DOM完全无关。

解决方案(两种跨浏览器兼容方案)

因为你要跨浏览器支持,所以我们避开仅支持IE的VBScript,用以下两种方案:

方案一:使用「Execute JavaScript」组件(推荐,专为Web场景设计)

这是AA官方推荐的Web页面JS执行方式,直接在浏览器上下文运行代码,完全支持DOM操作:

  • 步骤1:先用「Launch Browser」组件打开目标网站(支持Chrome、Firefox、Edge等现代浏览器)
  • 步骤2:添加「Web Automation」分类下的「Execute JavaScript」组件
  • 步骤3:在组件的「Script」输入框中写入DOM操作代码,示例如下:
// 按class名获取目标元素
const targetElement = document.querySelector('.your-target-class');
// 返回元素文本内容(AA会自动捕获这个返回值)
return targetElement ? targetElement.textContent.trim() : '目标元素未找到';
  • 步骤4:将返回值绑定到AA的变量(比如str_elementContent),后续流程可以直接调用这个变量

方案二:在「Run Script」组件中通过AA浏览器对象执行脚本

如果你一定要用「Run Script」组件,需要通过AA的内置Browser对象,把DOM操作代码委托给浏览器上下文执行:

// 获取当前活动的浏览器实例(前提是已经打开目标页面)
const activeBrowser = Application("Browser").GetActiveBrowser();
// 注入并执行浏览器上下文的JS代码
const result = activeBrowser.ExecuteScript(`
  // 这里的代码直接运行在浏览器DOM环境中,可正常访问document
  const elements = document.querySelectorAll('.your-target-class');
  // 返回所有匹配元素的文本内容数组
  return Array.from(elements).map(el => el.textContent.trim());
`);
// 将结果输出到AA变量(需要在Run Script的「Output」选项中绑定变量,比如arr_elementTexts)
result;
完整场景示例

假设你要访问https://example.com,获取页面中所有class为example-class的元素文本:

  1. 用「Launch Browser」打开https://example.com,选择Chrome浏览器
  2. 添加「Wait for Page Load」组件,确保页面完全加载
  3. (用方案一)添加「Execute JavaScript」组件,脚本代码:
const elements = document.querySelectorAll('.example-class');
return Array.from(elements).map(el => el.textContent.trim());
  1. 将返回值存储到AA的数组变量arr_exampleTexts
  2. 后续可以用「Loop」组件遍历这个数组,处理每个元素的文本内容
注意事项
  • 一定要确保页面加载完成后再执行DOM操作,否则可能找不到元素(配合「Wait for Page Load」或「Wait for Element」组件)
  • document.querySelector和document.querySelectorAll是W3C标准API,完全兼容所有现代浏览器,符合你的跨浏览器需求
  • 如果目标元素是动态加载的(比如通过AJAX),可以先用「Wait for Element」组件等待元素出现,再执行JS代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:18:34