この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 "
これにはちょっと困惑しています。さらに情報が必要な場合や、何が起こっているのかを知りたい場合はお知らせください。
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')
_