如何用iMacros在Slack中滚动模态窗口以获取全部频道成员?
解决Slack成员模态窗口的iMacros滚动加载问题
嘿,我懂你现在的麻烦——Slack的成员模态窗口是动态加载的,普通的页面滚动根本触发不了所有成员加载出来对吧?别慌,我给你一套专门针对这个场景的iMacros JS方案,保证能把所有成员都滚出来!
核心思路
Slack的成员列表是放在独立滚动容器里的,不是整个页面的滚动条,所以我们得精准定位这个滚动容器,然后循环滚动到底部,直到容器高度不再变化(说明没有新成员可加载了)。
完整iMacros JS代码
var macro; macro = "CODE:"; // 忽略临时错误,避免宏中途中断 macro += "SET !ERRORIGNORE YES" + "\n"; // 设置单步超时,防止无意义等待 macro += "SET !TIMEOUT_STEP 5" + "\n"; // 等待成员模态窗口完全加载 macro += "WAIT FOR SELECTOR .p-modal__content" + "\n"; // 获取滚动容器初始总高度 macro += "SET scrollHeight EVAL(\"document.querySelector('.c-scrollbar__hider').scrollHeight;\")" + "\n"; macro += "SET prevHeight 0" + "\n"; // 循环滚动直到没有新内容加载 macro += "WHILE {{scrollHeight}} != {{prevHeight}}" + "\n"; macro += " SET prevHeight {{scrollHeight}}" + "\n"; // 将滚动容器直接滚到最底部 macro += " EVAL(\"document.querySelector('.c-scrollbar__hider').scrollTop = document.querySelector('.c-scrollbar__hider').scrollHeight;\")" + "\n"; // 等待1秒让Slack加载新成员(网络慢可改成2秒) macro += " WAIT SECONDS 1" + "\n"; // 更新滚动容器高度,判断是否还有新内容 macro += " SET scrollHeight EVAL(\"document.querySelector('.c-scrollbar__hider').scrollHeight;\")" + "\n"; macro += "ENDWHILE" + "\n"; // 执行编写好的宏 iimPlay(macro);
关键细节说明
- 滚动容器选择器:
.c-scrollbar__hider是Slack模态窗口滚动区域的默认类名,如果你的Slack有自定义样式,可按F12打开开发者工具,右键检查滚动区域元素,替换成对应的选择器。 - 等待时间调整:
WAIT SECONDS 1是给Slack加载新成员的缓冲时间,网络差的话可以适当延长,避免滚动太快导致内容没加载完。 - 循环终止逻辑:通过对比滚动容器的
scrollHeight(总高度)是否变化,判断是否加载完所有成员——当高度不再增加时,就说明没有新成员了。
额外小提示
如果运行时找不到元素,你可以先手动打开成员模态窗口,用iMacros的「记录」功能抓取模态窗口和滚动容器的准确选择器,替换到代码里就行。
内容的提问来源于stack exchange,提问作者Green_hood
相关产品推荐
相关产品推荐

