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

Gramex YAML复用配置块时变量原始值丢失引发$转义报错

Gramex YAML配置复用场景下$转义变量值丢失报错问题

复现步骤

使用如下可复用gramextest YAML脚本执行测试:

variables:
  my_pwd: 'Kt^$$&^dg#%o4Zwcat9knS)S#W'
  short_wait: 8

common_blocks:
  - &prod_my_pwd
    name: MY_password
    type xpath //*[@id="login-pwd"]: $my_pwd
    click: xpath //*[@id="login-sub"]
    wait: $short_wait

uitest:
 - *prod_my_pwd

问题现象

变量my_pwd的值中包含*$符号,按照Gramex配置规则,字符串内出现$时需使用$$*进行转义避免触发值错误,该转义逻辑由gramex -> config.py -> _substitute_variable()函数实现,专门处理$转义场景的ValueError问题。
但上述脚本实际运行时仍抛出异常:

ValueError: Use $$ instead of $ in Ve5$&^fh#%o4Znjtv9kmH)H#W

对_substitute_variable()函数调试后确认执行逻辑:

  • 首次调用/使用变量$my_pwd时,替换逻辑运行正常
  • 通过YAML锚点*prod_my_pwd复用配置块时,执行失败

根因定位

第二次执行失败的直接原因:首次执行$my_pwd变量替换时,程序直接存储了_substitute_variable()返回的替换后的值(即转义符$$被处理为单个$的结果值),没有保留my_pwd带*$$*转义符的原始定义值。后续配置复用场景下读取到的变量值缺少必要转义符,_substitute_variable()检测到未转义的单个$符号时直接抛出值错误。
当前需解决配置复用场景下$my_pwd原始值丢失、无法读取变量初始定义值的问题。

预期行为

除非后续在脚本中显式修改/替换变量值,否则配置复用过程中变量不应丢失原始定义值。

环境信息

  • Gramex影响版本:所有早期版本至1.80.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:06:24