如何在Selenium中读取未暴露的JavaScript变量并提取数组o?
提取函数内部变量o的可行方法
方法一:将变量挂载到全局对象
o是zt函数的局部变量,外部无法直接访问。可以修改函数代码,把o挂载到window全局对象上:
在const o = r.hotspots这一行后添加:window.global_o = o;如果用自动化工具(如Selenium),可以通过执行脚本重写函数:
driver.executeScript(` const originalZt = window.zt; window.zt = function(e, t, n, r) { const o = r.hotspots; window.global_o = o; return originalZt(e, t, n, r); } `);触发zt函数执行后,用
driver.execute("return window.global_o")就能获取到o。方法二:调试断点直接捕获
- 打开浏览器DevTools的Sources面板,搜索定位到zt函数的定义
- 在
const o = r.hotspots行设置断点 - 触发页面操作让zt函数执行,程序暂停后,在控制台输入
o即可查看变量内容,也可右键选择“Store as global variable”将其保存到全局,后续随时调用
方法三:从参数r溯源获取
代码里o = r.hotspots,所以找到r参数的来源即可间接获取o:- 在zt函数的入口行设置断点,查看传入的r参数内容
- 找到调用zt函数的位置,在调用前捕获r变量,或同样将r挂载到全局对象
方法四:通过DOM元素反向推导
代码中用o.data生成了多边形路径字符串c,最终会应用到变量d对应的多边形元素上。可以直接获取该元素的路径属性,根据代码里的生成逻辑(h * f + "," + (l - Math.floor(e / _)))反向计算出o.data的内容,适合无法直接修改代码的场景。
内容的提问来源于stack exchange,提问作者Ethyl
相关产品推荐
相关产品推荐

