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

Cypress如何根据列表项名称定位对应colour-select类拾色器元素

解决方案

CSS选择器本身不支持通过子元素的文本内容定位到对应的父元素,所以你可以结合Cypress提供的DOM遍历API实现需求,具体实现逻辑为:先定位到文本为Operator的名称元素,向上查找到它所属的列表项li节点,再在该节点范围内查找拾色器元素。

代码实现

通用方法(支持任意角色名称查询)

// 根据传入的角色名称,返回对应拾色器元素
static getColourPickerByRole(roleName: string): Cypress.Chainable<JQuery<HTMLElement>> {
  return cy.contains("li.cdk-drag.item.container-fluid span.form-control", roleName)
    // 向上查找最近的列表项父节点
    .closest("li.cdk-drag.item.container-fluid")
    // 在当前列表项内查找目标拾色器
    .find(".colour-select");
}

调用示例

要获取Operator对应的拾色器,直接调用即可:

// 拿到Operator对应的拾色器后可继续执行点击、断言等操作
YourClassName.getColourPickerByRole("Operator").should("be.visible");

补充说明

该方案不受列表排序变化、动态新增项的影响,定位稳定性远高于按索引取值的方案。如果你一定要用纯CSS选择器实现,只有在列表顺序固定的场景下可以按索引定位:

/* 第三个li下的.colour-select元素,对应Operator(索引从0开始) */
li.cdk-drag.item.container-fluid:nth-child(3) .colour-select

注意:按索引定位的方案在列表项新增、排序调整后会失效,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:57:05