赛普拉斯:cy.window():无法获取属性值

时间:2021-01-21 23:51:52

标签: cypress

目标

您好,我希望使用 cy.window() 为页面的 window 对象收集自定义属性值。

问题

cy.log()JSON.stringify()一起使用时,表示它确实具有带值的属性;然而,当使用 lodash _.has() 时,没有这些属性,因此没有价值,因为没有找到这些属性。

代码

以下使用 cy.window() 的 Cypress 自定义命令收集自定义窗口的属性

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"]。< /p>

使用示例代码,日志输出显示页面的窗口确实包含属性 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:

我该如何解决这个问题?谢谢,非常感谢所有反馈。

1 个答案:

答案 0 :(得分:0)

在这里找到部分解决方案: 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}