Как я могу сохранить текст div для использования в другом месте? - PullRequest
0 голосов
/ 31 мая 2019

Мне нужно сохранить текстовое значение div и после него подтвердить в другом месте?

cy.get('div').should(($div) => {
    const myText = $div.innerText
})
cy.get('.value').should('have.text', myText)

Ответы [ 3 ]

1 голос
/ 31 мая 2019

Cypress асинхронный. Это означает, что если вы делаете что-то вроде этого:

cy.get('div').should(($div) => {
  const myText = $div.innerText
})
cy.get('.value').should('have.text', myText)

... ваш тест всегда будет неудачным. const myText = $div.innerText будет выполнено после оценки .should('have.text', myText).

Если вы хотите использовать myText таким образом, просто используйте Обещание, возвращенное cy.get():

cy.get('div')
.then($div => {
  const myText = $div.text()
  // write the rest of your test here
  cy.get('.value').should('have.text', myText)
})
0 голосов
/ 06 июня 2019

Один из способов написать простую функцию javascript в файле commands.js и вернуть text. Теперь вы можете вызывать функцию commands.js где угодно и когда угодно.

/ cypress / support / commands.js

Cypress.Commands.add('getText', () => {
 cy.visit('/');
 cy.get('div')
  .then($div => {
  const myText = $div.text();
    return myText;
  })
});

// Это ваш тестовый файл 1, например, 'test-spec-1.js'

describe('Test spec-1', function() {
  it('Receive first time ', function() {
   cy.visit('/');
   const someText1 = cy.getText(); 
...
  })
})

// Это ваш тестовый файл 2, например, 'test-spec-2.js'

describe('Test spec-2', function() {
  it('Receive second time', function() {
   cy.visit('/');
   const someText2 = cy.getText(); 
.....
  })
})
0 голосов
/ 05 июня 2019

Проблема в вашем фрагменте состоит в том, что вы не связываете его и, следовательно, теряете значение в последнем утверждении. По сути, вы должны объединить его в цепочку, чтобы использовать в последующих шагах.

let tempValue = "";
cy.get('div').each(($div) => {
  tempValue = $div.text();
  }).then(() => {
       cy.get('.value').should('have.text', tempValue)
});
...