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

如何不使用eval从字符串中解析Selenium的Key类对应按键值

Selenium Key字符串转实际按键值(无eval实现方案)

Selenium 导出的Key本身是标准JavaScript对象,你可以直接截取Key.前缀后的属性名,通过方括号访问对象属性的方式获取对应按键值,完全替代eval实现同等功能,从根源规避安全风险。

修改后可直接运行的代码如下:

const {Builder, By, Key, until} = require('selenium-webdriver');
// 其余原有业务逻辑保持不变
const obj = {val: 'Key.SPACE'}
if(obj.val.startsWith('Key.')) {
  // 截取"Key."后面的按键名称
  const keyProp = obj.val.slice(4);
  // 增加属性存在校验,避免传入非法Key名时得到无效值
  if(Object.hasOwn(Key, keyProp)) {
    obj.val = Key[keyProp];
  } else {
    // 可根据业务需求调整异常处理逻辑,比如设置默认值、抛出明确错误
    throw new Error(`未定义的按键名称:${keyProp}`);
  }
}
// 后续sendKeys调用无需修改
(...).sendKeys(obj.val);

方案优势

  • 完全消除了eval带来的任意代码执行安全隐患
  • 增加了合法性校验,出错时排查成本更低
  • 执行效率远高于eval调用,符合JS最佳实践

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:27:03