Получить элемент по вложенному значению ng-refle-model - PullRequest
0 голосов
/ 28 марта 2019

Я пришел к затруднению с выбором именно этого элемента.У меня есть ряд элементов tr, и мне нужно выбрать один из них на основе содержимого внутри.Ниже приведено упрощенное дерево с вероятными селекторами:

<tr data-test="FEE_SELECTOR_FEE_ROW">...</tr>
<tr data-test="FEE_SELECTOR_FEE_ROW">...</tr>
<tr data-test="FEE_SELECTOR_FEE_ROW">
    <td>
        <input data-test="FEE_SELECTOR_FEE_NAME" ng-reflect-model="Doc">
    </td>
</tr>
<tr data-test="FEE_SELECTOR_FEE_ROW">
    <td>
        <input data-test="FEE_SELECTOR_FEE_NAME" ng-reflect-model="Admin">
    </td>
</tr>

Так что в этом случае я бы хотел выбрать tr, содержащий «Admin» или «Doc», в зависимости от того, как объект передается в мойфункция.Ниже приведен фрагмент кода:

 export function selectOptionsFees(options: E2EOptionsFees[]) {
  cy.getDataTestTag(DataTestTags.OPTIONS_FEES_SUMMARY).first().click();
  options.forEach((option: E2EOptionsFees) => {
    cy.getDataTestTag(DataTestTags.FEE_SELECTOR_FEE_ROW)
      .contains('tr', option.name)
      .within(() => {

В строке «содержит» я застрял, а option.name будет соответствовать либо «Doc», либо «Admin» в html выше.Во всех других случаях до сих пор во входных данных был текст, так что приведенный выше код работал, но в этом случае я поставил в тупик.

Редактировать: Я понял это!Если кто-то еще сталкивается с этим, часто ищите документацию jQuery.Оказывается, это намного лучше, чем документация Cypress (нет недостатков в Cypress, они действительно показывают, что он работает с jQuery).Это все, что нужно:

cy.get(`[data-test=FEE_SELECTOR_FEE_NAME][ng-reflect-model="${option.name}"]`)

1 Ответ

0 голосов
/ 28 марта 2019

Вы можете попробовать сопоставить атрибут ng-refle-model:

cy.getDataTestTag(DataTestTags.FEE_SELECTOR_FEE_ROW)
    .find(`tr input[ng-reflect-model="${option.name}"]`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...