web-dev-qa-db-ja.com

サイプレスの要素から属性を取得しようとしてエラーが発生しました

この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:再試行のタイムアウト:プロパティ: 'value'がサブジェクトに存在しないため、cy.its()エラーが発生しました。

invokeも試しました:

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

しかし、同様のエラーが発生します:

CypressError:再試行のタイムアウト:プロパティ: 'value'がサブジェクトに存在しないため、cy.invoke()エラーが発生しました。

どちらの場合でも、get()コマンドのサイプレスコンソール出力は、valueプロパティを持つ要素を正常に表示します:

渡される:入力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 "

これにはちょっと困惑しています。さらに情報が必要な場合や、何が起こっているのかを知りたい場合はお知らせください。

10
Brendan

invoke() は、要素に対してjquery関数を呼び出します。入力の値を取得するには、関数val()を使用します。

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

これはnotの取得と同じです。value attributeはユーザー入力で更新されず、要素のレンダリング時に値を事前設定するだけです。属性を取得するには、jquery関数attr()を使用できます。

_cy.get('input').invoke('attr', 'placeholder').should('contain', 'username')
_
7
bkucera