【发布时间】:2021-01-22 08:32:12
【问题描述】:
目标
您好,我希望使用cy.window() 为页面的window 对象收集自定义属性值。
问题
当cy.log() 与JSON.stringify() 一起使用时,它表示它确实具有带值的属性;但是,当使用 lodash _.has() 时,没有这些属性,因此没有价值,因为没有找到这些属性。
代码
以下赛普拉斯自定义命令使用cy.window() 收集自定义窗口的属性
export function cmdCypressWindow($propName: string) {
cy.window()
.its($propName)
.then(($propValue: Cypress.AUTWindow) => {
cy.log('props names:', JSON.stringify(Object.getOwnPropertyNames($propValue), null, 2));
cy.log('props values:', JSON.stringify($propValue, null, 2));
cy.log('VERSION prop:', _.has($propValue, 'VERSION'));
cy.log('HOST prop:', _.has($propValue, 'HOST'));
cy.log('VERSION value:', _.get($propValue, 'VERSION'));
cy.log('HOST value:', _.get($propValue, 'HOST'));
});
}
传入参数$propName值'ACT',因为我希望页面的窗口对象包含window.ACT["VERSION"]。
使用示例代码,日志输出显示页面的窗口确实包含属性 ACT["VERSION"]。
但是,当访问此窗口对象时,列出的属性不可用且未定义:
window
- its .ACT
log props names:, [ "__esModule", "VERSION", "HOST", "RulesList", "RulesAddEdit", "AppsList", "AppsOAuth", "AppsAdd" ]
log props values:, { "VERSION": "0.2.11", "HOST": "radmin" }
log VERSION prop:, false
log HOST prop:, false
log VERSION value:
log HOST value:
我该如何解决这个问题?谢谢,非常感谢所有反馈。
【问题讨论】:
-
'ACT' 是应用程序在窗口上定义的属性?它的代码是什么样的?
-
你试过用
Cypress._代替导入lodash吗? -
谢谢,我会看看这个建议。
标签: cypress