Automation Anywhere开发:JS提取MUI元素并执行指定操作的求助
解决方案
你的代码问题分析
- 第一个代码里,
for循环刚执行第一次就用return终止了,根本没遍历所有元素,自然拿不到完整的元素数组。 - 用
getElementsByClassName时,不能直接写多个空格分隔的类名(比如"MuiButtonBase-root MuiCardActionArea-root"),这个方法只支持单个类名,多类名要改用querySelectorAll。
完整实现代码
下面是满足你需求的完整脚本,可直接在Chrome控制台运行:
// 1. 刷新页面,等待页面加载完成后执行后续逻辑 location.reload(); window.addEventListener('DOMContentLoaded', () => { // 替换成你要查找的指定文本 const targetText = '你的目标文本'; // 2. 获取所有目标MUI Grid元素(或者替换成你需要的a标签选择器) // 如果是找MuiGrid-container: const gridElements = document.querySelectorAll('.MuiGrid-container'); // 如果是找那个a标签: // const gridElements = document.querySelectorAll('.MuiButtonBase-root.MuiCardActionArea-root'); // 3. 遍历元素,检查文本并打开新标签页 gridElements.forEach(element => { if (element.innerText.includes(targetText)) { // 如果是a标签,直接获取href打开 if (element.tagName === 'A') { window.open(element.href, '_blank'); } else { // 如果不是a标签,找里面的链接(根据实际页面结构调整) const link = element.querySelector('a'); if (link) window.open(link.href, '_blank'); } } }); });
关键说明
querySelectorAll支持CSS选择器语法,多类名用.连接(比如.class1.class2),表示同时拥有这两个类的元素。- 用
DOMContentLoaded确保页面完全加载后再查找元素,避免因为页面未渲染完找不到元素。 forEach遍历比for循环更简洁,也不会出现提前return的问题。- 打开新标签页用
window.open,如果是a标签也可以先设置element.target = '_blank'再调用element.click(),效果一致。
内容的提问来源于stack exchange,提问作者steve d.
相关产品推荐
相关产品推荐

