cypress - 赛普拉斯 find() 保持状态?
问题描述
我正在使用最新版本的赛普拉斯(4.12.0)。我find()
在连续使用两个命令时遇到问题。在我看来,赛普拉斯以某种方式保持状态,通过执行find()
.
这是我的 Cypress JS 代码,用于查找同一级别的三个字段的内容:
1. const shipmentContainer: any = cy.get(`div .shipment-container:contains("${SHIPMENT_LABEL} ${shipmentIndex + 1}")`);
2. shipmentContainer.find('div div').contains(`${TRACKING_NUMBER_LABEL} ${shipment[TRACKING_NUMBER_FIELD]}`);
3. shipmentContainer.find('div div').contains(`${SHIPPING_STATUS_LABEL} ${shipment[SHIPPING_STATUS_FIELD]}`);
4. shipmentContainer.find('div div').contains(`${SHIP_METHOD_LABEL} ${shipment[SHIP_METHOD_FIELD]}`);
我不包括 HTML,因为我认为数据的细节并不重要。
这是正在发生的事情。第 1 行正确设置容器。第 2 行得到了正确的数据,我可以在赛普拉斯 UI 中看到这些数据。但是第 3 行失败了,因为它似乎是从与容器设置的位置完全不同的位置开始的。如果我注释掉第 2 行,则第 3 行有效,但第 4 行无效。所以只有第find()
一个有效。
这使我相信容器必须保持状态。所以我尝试了以下方法,但它根本没有任何区别,这揭穿了我的假设。
const shipmentContainer: any = cy.get(`div .shipment-container:contains("${SHIPMENT_LABEL} ${shipmentIndex + 1}")`);
_.cloneDeep(shipmentContainer).find('div div').contains(`${TRACKING_NUMBER_LABEL} ${shipment[TRACKING_NUMBER_FIELD]}`);
_.cloneDeep(shipmentContainer).find('div div').contains(`${SHIPPING_STATUS_LABEL} ${shipment[SHIPPING_STATUS_FIELD]}`);
_.cloneDeep(shipmentContainer).find('div div').contains(`${SHIP_METHOD_LABEL} ${shipment[SHIP_METHOD_FIELD]}`);
赛普拉斯本身是否保持状态find()
?如果是这样,我该如何重新设置它,以便我在容器上的每个发现都从同一位置开始?
解决方案
推荐阅读
- unity3d - 没有 Ray/Raycast 和 Colliders 的 Unity 鼠标输入
- excel - 具有可变值的数组 - VBA
- assembly - MIPS 快速排序数组
- php - 修复错误编码的 JSON 数据
- javascript - 一个组件的 Angular 事件发射器与另一个组件混淆
- php - 如何修复输入数组并正确显示
- c++ - 使用“任务”函数指针队列定义作业管理器
- java - 如何使用 xslt 将 XML 中的值附加到 TestNG 可通过电子邮件发送的 HTML 报告
- awk - 用于查找最大数字的 AWK 脚本
- css - .li 悬停和着色 .a 和 span