如何使用Cypress获取JavaScript变量的值?
如何用Cypress获取页面中的JavaScript变量foo
为什么当前代码无法获取foo
你页面中的foo是声明在$(document).ready()回调函数内部的局部变量,它的作用域仅限于这个回调函数,不会挂载到window全局对象上,所以通过win.foo拿到的结果会是undefined。
解决方案
方案1:修改页面代码,将foo设为全局变量
如果有权限修改页面代码,把var foo改成挂载到window对象上,让foo成为全局变量,Cypress就能直接访问:
$(document).ready(function() { ... window.foo='xyz'; // 将变量挂载到window全局对象 ... }
你的Cypress代码无需修改,执行后就能通过win.foo获取到'xyz'。
方案2:无法修改页面代码时的限制
如果不能修改页面代码,无法获取这个foo的值——因为回调函数执行完毕后,内部的局部变量foo会被JavaScript的垃圾回收机制清理,不存在于页面的任何可访问作用域中。
内容的提问来源于stack exchange,提问作者teca
相关产品推荐
相关产品推荐

