Cypress 柏树的状态?

Cypress 柏树的状态?,cypress,Cypress,我使用的是最新版本的Cypress(4.12.0)。我在连续使用两个find()命令时遇到问题。在我看来,Cypress以某种方式保持着状态,这是通过执行find()而改变的 以下是我的Cypress JS代码,用于查找同一级别的三个字段的内容: 1. const shipmentContainer: any = cy.get(`div .shipment-container:contains("${SHIPMENT_LABEL} ${shipmentIndex + 1}")

我使用的是最新版本的Cypress(4.12.0)。我在连续使用两个
find()
命令时遇到问题。在我看来,Cypress以某种方式保持着状态,这是通过执行
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行获得了正确的数据,我可以在Cypress 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]}`);


Cypress本身是否在
find()
上保持状态?如果是这样的话,我如何重新设置它,使容器上的每个查找都在同一位置开始?

这是因为cypress命令正在运行:

返回值

不能指定或使用任何Cypress命令的返回值。命令排队并异步运行

对于我来说,我经常使用以下命令来重复使用:

cy.get('div .some-class').as('fancyDiv');
cy.get('@fancyDiv').find('something').contains('bar');
cy.get('@fancyDiv').find('something').contains('foo');

我可以使用Cypress的
in()
函数来实现这一点,但我仍然很好奇为什么我会看到上述行为。谢谢,@sam cho,现在一切都有意义了。