Невозможно установить значение переменной внутри команды cypress cy.get () для использования вне команды - PullRequest
1 голос
/ 08 марта 2019

Я устанавливаю переменную pin, обновляю ее в cy.get(), а затем пытаюсь использовать ее после cy.get() - это не позволяет мне сделать это.

Я также читал здесь, что это невозможно: https://docs.cypress.io/guides/core-concepts/variables-and-aliases.html#Return-Values.

Мне действительно нужно использовать эту переменную, чтобы иметь возможность войти в систему: это сгенерированный PIN-код иМне нужно использовать его при входе в систему.

var pin = ""
cy.get('.pin-field').invoke('text').then((text1) => {
    pin = text1; //assign text1 value to global pin variable, does not work

    cy.log(text1) // this works and logs the value of text1
})

cy.log(pin) //this just logs an empty

Ответы [ 2 ]

3 голосов
/ 08 марта 2019

Проблема в синхронизации: функция invoke возвращает Обещание, которое выполняется асинхронно.Код cy.log(pin) выполняется сразу после вызова invoke и до разрешения обещания.

Попробуйте:

cy.get('.pin-field').invoke('text').then(pin => {
    cy.log(pin);  
})

Или вы можете смоделировать синхронное поведение с помощью async/await:

async function login(cy) {
    const pin = await cy.get('.pin-field').invoke('text'); // call it synchron
    cy.log(pin); // this code executes when 'invoke` returned
}

Не забудьте, код с await должен быть закрыт в функции async.

0 голосов
/ 08 марта 2019

Похоже, вы боретесь с прицелом.Что работает для меня это:

    cy.get('.original_object')
      .then($value => {
        const retreivedValue = $value.text()
    cy.get('.test_object')
      .should('contain', retreivedValue)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...