Cypress получает текстовое значение из элемента

#string #text #cypress

Вопрос:

Я пытаюсь получить текст из элемента с Cypress в первом тесте из первого домена, а затем ввести его во втором тесте в другом домене, вот код введите описание изображения здесь

Мне нужно взять код с h4.

Я реализовал следующую часть кода:

 get studentCouponValue() {
    return cy.get('h4').then(($span) => {
        const couponValue = $span.text();
        cy.log(couponValue);
    })
}
 

в журналах я вижу правильное значение купона, но когда я пытаюсь ввести его в поле, я получаю ошибку

Цепной подход не соответствует моим ожиданиям, потому что я собираюсь использовать его в разных тестах.

Ответ №1:

Попробуйте это:

 get studentCouponValue() {
    return cy.get('h4').then(($span) => {
        const couponValue = $span.innerText;
        cy.log(couponValue);
    })
}
 

Комментарии:

1. Та же проблема cy.type() может принимать только строку или число. Вы передали: [объект Объект] Мне нужно экспортировать значение const, я полагаю, оно работает только локально

Ответ №2:

я решил

 initStudentCouponValue() {
   const self = this;
    return cy.get('main > .container-fluid').find('h4').then((span) => {
        self.couponValue = span.text();
        cy.log('First log '  self.couponValue);
        return new Cypress.Promise((resolve) => {
            return resolve(self.couponValue);
        });
    });
}

getStudentCouponValue() {
    return this.couponValue;
}
 

в тесте, где мы хотим использовать значение

 let couponValue;

 admin.initStudentCouponValue().then(() => {
        couponValue = admin.getStudentCouponValue()
    });
 

а позже мы сможем использовать

coupoValue

для ввода