Я использую последнюю версию 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. Но строка 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()
? И если да, как я могу вернуть его обратно, чтобы каждая из моих находок в контейнере начиналась в одном месте?