#javascript #testing #automation #path #cypress
Вопрос:
cy.get('[data-ng-show="destact['dest'].length > 0"] > .checkbox-block > :nth-child(1) > .ng-binding').click()
выше приведен путь к моему флажку. Поскольку есть две одинарные кавычки, я также попытался объединить их, но безуспешно
cy.get('[data-ng-show="destact[' 'dest' '].length > 0"] > .checkbox-block > :nth-child(1) > .ng-binding').click()
Комментарии:
1. Можете ли вы добавить html элемента в свой вопрос ?
Ответ №1:
Обратные галочки также являются допустимыми разделителями для селектора,
cy.get(`[data-ng-show="destact['dest'].length > 0"] > .checkbox-block > :nth-child(1) > .ng-binding`)
Ответ №2:
Предполагая, что селектор [data-ng-show="destact['dest'].length > 0"] > .checkbox-block > :nth-child(1) > .ng-binding
является правильным селектором, вы можете использовать обратную косую черту, чтобы избежать одинарных кавычек:
cy.get('[data-ng-show="destact['dest'].length > 0"] > .checkbox-block > :nth-child(1) > .ng-binding').click()
Ответ №3:
По-видимому, при выборе этого атрибута со сложным выражением возникают две проблемы
<div data-ng-show="destact['dest'].length > 0" ></div>
- конфликт кавычек
- квадратные скобки преждевременно завершают селектор.
Это будет работать, если есть только один элемент с выражением, начинающимся destact
cy.get("div[data-ng-show^=destact]")
.should('have.attr', 'data-ng-show', "destact['dest'].length > 0")
.find('.checkbox-block > :nth-child(1) > .ng-binding')
Если выбрано более одного элемента cy.get("div[data-ng-show^=destact]")
, вы можете добавить фильтр для точного выражения
cy.get("div[data-ng-show^=destact]")
.filter((i, el) => {
return Cypress.$(el).attr('data-ng-show') === "destact['dest'].length > 0"
})
.find('.checkbox-block > :nth-child(1) > .ng-binding')