【问题标题】:Cypress: cy.window(): Unable to get property values赛普拉斯:cy.window():无法获取属性值
【发布时间】: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


【解决方案1】:

在这里找到部分解决方案: TypeScript: Find Key / Value in Object (list comprehension?)

修改功能:

export function cmdCypressWindow($propName: string) {

  cy.window()
    .its($propName)
    .then(($propValue: Cypress.AUTWindow) => {
      const actValues: Record<string, string> = {};

      Object.keys($propValue).forEach(key => {
        // @ts-ignore
        if (typeof $propValue[key] !== 'function') {
          // @ts-ignore
          actValues[key as string] = $propValue[key];
        }
      });

      cy.log(`window.${$propName}`, JSON.stringify(actValues, null, 2));

      cy.wrap(actValues);
    });
}

结果表明我能够从window对象获取值:

log   props names:, [ "__esModule", "VERSION", "HOST", "RulesList", "RulesAddEdit", "AppsList", "AppsOAuth", "AppsAdd" ]
log   window.ACT, { "VERSION": "0.2.11", "HOST": "radmin" }
wrap  {version: 0.2.11, host: radmin}

【讨论】:

    猜你喜欢
    • 2018-06-29
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多