web-dev-qa-db-ja.com

サイプレスで完全一致テキストをクリックします

サイプレスでは、_.contains_コマンドは一致するすべての要素を生成するため、テキストが含まれているドロップダウン項目をクリックする場合、_.contains_は正常に機能します。しかし、私はテキストが「ナビゲーションラベル」であるドロップダウンアイテムをクリックする必要があるという問題に直面しています。問題は、同じドロップダウンに「新しいナビゲーションラベル」と呼ばれる別のオプションがあり、代わりに押しているためです。最初に表示されます。

必要なテキストと完全に一致する要素をクリックする方法はありますか?

_Given('I click on the {string} drop down option', option => {
  cy.get(`[data-test="dropdown"]`)
    .find('.item')
    .contains(option)
    .click();
});
_

私は.last()を使用して問題を部分的に解決していますが、可能な限り再利用可能な手順を維持しようとしたため、この解決策は非常にあいまいであり、これはこの特定の問題で機能させるためのパッチにすぎません。

アイテムはsemantic-uiから直接レンダリングされるため、ドロップダウンの特定のアイテムごとにデータテストを行うことはできないことに注意してください。

6
Baronvonbirra

以下のコードスニペットを使用して、正確なテキストを持つ要素をクリックできます。これは魅力のように機能します。問題が発生した場合はお知らせください。

サイプレスでは以下のように処理する必要があります。これは、Selenium WebdriverのgetText()と同等です。

clickElementWithEaxctTextMatch(eleText) {
  cy.get(".className").each(ele => {
    if (ele.text() === eleText) {
      ele.click();
    }
  });
}
2
Srinu Kodi