Я пришел к затруднению с выбором именно этого элемента.У меня есть ряд элементов 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}"]`)