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

Protractor的browser.executeScript对应Cypress哪个API?相关函数如何转换?

Protractor转Cypress executeScript等效实现方案

场景1:脚本点击按钮功能实现

等效代码如下:

// 初始化按钮选择器,对应原Protractor的element(by.id(button))
this.buttonSelector = `#${button}`;

clickExactButton(): Cypress.Chainable<void> {
  // 写法1:直接操作原生DOM节点
  return cy.get(this.buttonSelector).then($el => {
    $el[0].click();
  });

  // 写法2:链式调用更简洁,效果相同
  // return cy.get(this.buttonSelector).invoke('get', 0).invoke('click');
}

说明:两种写法都直接调用原生DOM的click方法,完全绕过Cypress默认的元素可交互性校验,和原ProtractorexecuteScript实现的点击效果完全一致

场景2:会话存储注入数据功能实现

等效代码如下:

inject(jsonResponses: jsonResponse[]): Cypress.Chainable<void> {
  return cy.window().then(win => {
    let currentRes = win.sessionStorage.getItem('http_responses') || '[]';
    currentRes = JSON.parse(currentRes);
    currentRes = jsonResponses.concat(currentRes);
    win.sessionStorage.setItem('http_responses', JSON.stringify(currentRes));
  });
}

入参jsonResponses的结构和你原有定义完全兼容,不需要修改结构,示例结构如下:

export const ExampleData: jsonResponse[] = [
  {
    id: '1',
    name: 'Bob',
    department: 'IT'  
  },
  {
    id: '2',
    name: 'Alice',
    department: 'Sales' 
  },
  {
    id: '3',
    name: 'David',
    department: 'InfoSec' 
  }
]

说明:Cypress会自动处理异步执行逻辑,不需要手动封装Promise返回,链式调用会按顺序执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:30:01