You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中能否用变量动态引用对象属性以优化自动化测试代码?

可以通过「配置抽离+动态遍历」的方式彻底重构这类代码,完全解决重复冗余、难维护的问题,同时适配多窗口复用、多操作类型的需求。
注意原代码存在明显的复制粘贴错误:所有字段的判断条件都写为object.field1,会导致只要field1为空,其余字段哪怕传值也不会被处理,重构时可直接修正。

优化步骤

1. 抽离字段元数据配置

把每个字段的固定规则(参数对象的键名、对应的操作类型枚举、目标控件)统一存为配置数组,不同窗口可以维护独立的配置:

// 「创建对象」菜单的字段配置,新增/删除字段仅需修改该配置
const createObjectFieldMeta = [
  {
    key: 'field1',
    operateFunc: enums.RunFunctions.INPUTFUNCTION,
    target: this.WindowObjects.FIELD1_TEXTBOX
  },
  {
    key: 'field2',
    operateFunc: enums.RunFunctions.INPUTFUNCTION,
    target: this.WindowObjects.FIELD2_TEXTBOX
  },
  {
    key: 'field3',
    operateFunc: enums.RunFunctions.INPUTFUNCTION,
    target: this.WindowObjects.FIELD3_TEXTBOX
  },
  {
    key: 'field4',
    operateFunc: enums.RunFunctions.INPUTFUNCTION,
    target: this.WindowObjects.FIELD4_TEXTBOX
  },
  {
    key: 'field5',
    operateFunc: enums.RunFunctions.INPUTFUNCTION,
    target: this.WindowObjects.FIELD5_TEXTBOX
  },
  {
    key: 'field6',
    operateFunc: enums.RunFunctions.INPUTFUNCTION,
    target: this.WindowObjects.FIELD6_TEXTBOX
  },
  // 下拉框类型字段配置示例,无需修改核心逻辑
  {
    key: 'selectField1',
    operateFunc: enums.RunFunctions.SELECTFUNCTION,
    target: this.WindowObjects.SELECT1_DROPDOWN
  }
]

2. 重构核心方法,用循环生成操作数组

利用JavaScript对象的动态属性访问特性(obj[key]形式),遍历配置生成符合要求的二维数组:

// 封装为公共方法,接收参数对象和字段配置,支持多窗口复用
this.initiateObject = function (inputParams, fieldMeta) {
  const input = fieldMeta.map(item => {
    // 仅当参数中存在对应字段的值时,生成有效操作数组
    if (inputParams[item.key]) {
      return [item.operateFunc, inputParams[item.key], item.target]
    }
    return []
  })
  this.runFunctions(input)
  this.clickDone()
}

// 调用示例
this.initiateObject(object1, createObjectFieldMeta)

优化优势

  • 维护成本极低:50个字段仅需维护50行配置,新增/删除字段无需修改逻辑代码,完全避免复制粘贴带来的低级错误
  • 复用性强:不同窗口仅需传入对应窗口的字段配置,即可复用同一套初始化逻辑
  • 扩展性好:后续新增操作类型(如复选框勾选、单选框选择等),仅需在配置中指定对应枚举值即可,无需调整核心逻辑

内容的提问来源于stack exchange,提问作者JohnN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:15:07