Ошибка при попытке получить атрибут из элемента в Cypress - PullRequest
0 голосов
/ 04 июля 2018

У меня есть этот HTML-элемент:

<input id="" type="text" name="last_name" value="Userc7bff2d0-7faf-11e8-9884-8fe4c5df7f77-Updated" class="medium" maxlength="2000" autocomplete="off" tabindex="" data-reactid=".0.2.0.1.0.2.1.0.1.0.0.1:0.1.0.1.2:$/=10">

Я хочу получить свойство value, чтобы утверждать, что оно было обновлено моим тестом.

Я пытался использовать its():

cy
  .get(selector)
  .its("value")
  .should("contain", "-Updated");

Но получите ошибку:

CypressError: Тайм-аут повторной попытки: cy.its () произошла ошибка, поскольку свойство: 'value' не существует в вашей теме.

Я также пытался invoke:

cy
  .get(selector)
  .invoke("value")
  .should("contain", "-Updated");

Но получите похожую ошибку:

CypressError: Тайм-аут повторной попытки: cy.invoke () допустил ошибку, так как свойство: 'value' не существует в вашей теме.

В обоих случаях вывод консоли Cypress команды get () успешно показывает элемент со свойством value:

Получено: input id = "" type = "text" name = "first_name" value = "Fake-updated" class = "medium" maxlength = "2000" autocomplete = "off" tabindex = "" data- reactid =»0.2.0.1.0.2.1.0.1.0.0.1:. 0.1.0.0.2: $ / = 10"

Я немного озадачен этим. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация или есть идея, что происходит.

1 Ответ

0 голосов
/ 05 июля 2018

invoke() вызывает функцию jquery для элемента. Чтобы получить значение ввода, используйте функцию val():

cy.get('input').invoke('val').should('contain', 'mytext')

Это , а не - это то же самое, что получить атрибут value , который не будет обновляться при вводе пользователем, он только предварительно устанавливает значение при визуализации элемента. Чтобы получить атрибут, вы можете использовать функцию jquery attr():

cy.get('input').invoke('attr', 'placeholder').should('contain', 'username')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...