Сообщение об ошибке при использовании псевдонимов с CypressIO - PullRequest
0 голосов
/ 11 декабря 2018

Я получаю следующее сообщение об ошибке при использовании: «TypeError: Невозможно прочитать свойство 'text' of undefined"

Я сделал точно так, как они делают в документации: https://docs.cypress.io/guides/core-concepts/variables-and-aliases.html#Aliases

Кто-нибудь может увидеть, что я делаю не так?

beforeEach(() => {
    cy.visit('http://localhost:4200/');
    loginPage.login();
    timeFilter.button.click();
    cy.get('#title').invoke('text').as('text');
  });

  it('should show text', () => {
    console.log(this.text);
  });

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Прочитайте документацию по кипарису, и проблема, с которой я столкнулся, заключалась в использовании функций стрелок, и я не получил доступ к псевдониму в замыкании с помощью .then ().Как только я это сделал, все заработало:

cy.get('#title').invoke('text').as('text');

it('should show text', () => {
    cy.get('#main').then(function () {
      console.log(this.text);
    });
  });

ИЛИ используйте function() вместо () => в it() обратном вызове

cy.get('#title').invoke('text').as('text');

it('should show text', function() {
  console.log(this.text);
});
0 голосов
/ 11 декабря 2018

Текст всегда был болью на кипарисе.Это может быть одной из нескольких вещей:

1) Иногда this.alias не работает, попробуйте использовать: cy.get('@text').then(text => console.log(text));

2) Если текст содержится в элементе ниже #title, вам нужно будет получить этот конкретный элемент.Например, #title может быть div, который содержит элемент h1 внутри него, поэтому в этом случае вам нужно будет использовать #title > h1 в качестве селектора.Опубликуйте свой HTML, и я смогу сказать, так ли это

3) invoke('text') почти никогда не работает, я не уверен почему.Я считаю, что это работает гораздо чаще cy.get('#title').then($el => el.text())

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