Chrome中JS脚本触发按钮点击无效果,如何区分物理与脚本点击及解决
我此前询问过相关问题,从Kelvin Schoofs处得到了有用信息:querySelector是更优的元素选择方案,因此我做了如下实现:
var bc = document.querySelectorAll('button.link.event-detail__event-information__event-name-status__grouped-match'); for (var b of bc){ if(b.ariaExpanded=="false"){ b.click(); } }
但元素选择并不是我的问题核心,一直没人解答我真正想询问的内容,因此我用图片补充说明:
展示的是目标页面,页面上多个向上的V形图标代表对应行可展开查看更多信息,行之间有边界线分隔。
展示我要触发的53个点击事件中第一个的启动过程。
是脚本运行后的结果:所有V形图标都变为向上状态,代表行已展开,行之间的边界线也消失了,但除此之外没有其他变化。
是物理点击按钮后正常加载出的展开信息示例。
我尽可能跟进了站点源码运行流程,确认脚本正确识别了目标元素和按钮,也收集到了拉取信息所需的正确数据(运动项目、日期等),但对应数据始终没有插入到页面中。我一度怀疑脚本触发的点击不会生成预期的顺序队列,短时间内执行大量点击可能导致后一次请求覆盖前一次;但我单独触发单个行的点击时,问题依旧存在(V形图标翻转、边界消失,但无数据加载)。
我排查站点代码时发现,有一段逻辑(对应函数为ft(e)和Un())会收集各类物理鼠标数据(clientX/clientY、screenX/screenY、按键状态等)。因此我最后再重申我的核心问题:是否存在可以区分脚本触发点击和物理点击的机制?如果存在,有没有对应的解决办法?
我手部大部分功能受损,能够自动化完成网页交互对我来说非常重要。之前用VB6/IE很容易实现这类需求,但现在很多HTML5站点都不支持该方案了,我正在学习JavaScript,但如果这类自动化今后都无法实现的话,我不想浪费时间做无用功。
恳请各位提供帮助,非常感谢。
内容的提问来源于stack exchange,提问作者janobody
相关产品推荐
相关产品推荐

