Я пытаюсь выбрать значение в раскрывающемся списке с помощью Cypress.Я попробовал несколько способов сделать это, но ни один из них не сработал.Всегда выбирается значение, которое уже выбрано.
В документации Cypress я нашел это:
cy.get('select').select('apples').should('have.value', '456')
Когда я применяю это к своему коду ...:
cy.get('select').select('FR').should('have.value', 'FR')
... Я получаю эту ошибку: CypressError: Тайм-аут повторной попытки: cy.select () не удалось, потому что этот элемент не виден:
<select class="ng-tns-c16-2" aria-hidden="true" tabindex="-1" aria-label="Nederlands">...</select>
Этот элемент '' не виден, так как его содержимоебыть обрезанным одним из его родительских элементов, который имеет CSS-свойство overflow: 'hidden', 'scroll' или 'auto'
Исправьте эту проблему или используйте {force: true}, чтобы отключить проверку ошибок.
https://on.cypress.io/element-cannot-be-interacted-with
Когда я использую force: true, ошибка пропускается, но все равно не работает.
cy.get('select').select('FR',{force:true}).should('have.value', 'FR')
Я также пробовал без использованиявыберите, но с помощью клика.При этом также просто выбирается выбранный, а не третий выбранный.
cy.get('option').eq(2).click({force: true});
Использование .type ({downarrow}) также завершается ошибкой, поскольку это не поле ввода текста.
Итак, я 'У меня сейчас действительно нет идей.
Я хочу протестировать множественные выпадающие списки, вот один из них:
<span class="eco-form-component__control">
<p-dropdown formControlName="sector"
[options]="sectors"
[style]="{'width':'100%'}">
</p-dropdown>
</span>
РЕДАКТИРОВАТЬ:
Я также попробовал следующее,здесь я получаю правильное значение (Франция), но он не может щелкнуть по нему.
cy.get('p-dropdown[formControlName="provenanceCountry"]').click();
cy.get('p-dropdown[formControlName="provenanceCountry"]').get('select').then(option => {
cy.wrap(option).get('p-dropdown[formControlName="provenanceCountry"]').contains('FRANCE').click();
});
Ошибка:
CypressError: Тайм-аут повторной попытки: cy.click () не удалось, потому чтоэтот элемент не виден:
<option class="ng-tns-c9-15 ng-star-inserted" value="[object
Object]">FRANCE</option>
Этот элемент '<option.ng-tns-c9-15.ng-star-inserted>'
не виден, так как имеет эффективную ширину и высоту: '0 x 0' пикселей.
Исправьте эту проблему или используйте {force: true}, чтобы отключить проверку ошибок.
https://on.cypress.io/element-cannot-be-interacted-with
Когда я использую {force: true} в моем клике, ошибкапросто не отображается.
ТОЧНЫЙ HTML:
<div _ngcontent-c11="" class="eco-form-component"><label _ngcontent-c11="" class="eco-form-component__label" ng-reflect-ng-class="eco-form-component__label"> Geïmporteerd uit </label><span _ngcontent-c11="" class="eco-form-component__control"><p-dropdown _ngcontent-c11="" formcontrolname="provenanceCountry" class="ng-tns-c14-7 ui-inputwrapper-filled ng-untouched ng-pristine ng-invalid" ng-reflect-style="[object Object]" ng-reflect-options="[object Object],[object Object" ng-reflect-name="provenanceCountry"><div class="ng-tns-c14-7 ui-dropdown ui-widget ui-state-default ui-corner-all ui-helper-clearfix" ng-reflect-ng-class="[object Object]" ng-reflect-ng-style="[object Object]" style="width: 100%;"><!--bindings={
"ng-reflect-ng-if": "true"
}--><div class="ui-helper-hidden-accessible ng-tns-c14-7 ng-star-inserted"><select class="ng-tns-c14-7" aria-hidden="true" tabindex="-1" aria-label=" "><!--bindings={}--><!--bindings={}--><!--bindings={
"ng-reflect-ng-if": "true"
}--><!----><!--bindings={
"ng-reflect-ng-for-of": "[object Object],[object Object"
}--><option class="ng-tns-c14-7 ng-star-inserted" value=" "> </option><option class="ng-tns-c14-7 ng-star-inserted" value="BELGIUM">BELGIUM</option><option class="ng-tns-c14-7 ng-star-inserted" value="FRANCE">FRANCE</option><!----></select></div><div class="ui-helper-hidden-accessible"><input class="ng-tns-c14-7" readonly="" role="listbox" type="text" aria-label=" "></div><!--bindings={
"ng-reflect-ng-if": "true"
}--><label class="ng-tns-c14-7 ui-dropdown-label ui-inputtext ui-corner-all ng-star-inserted" ng-reflect-ng-class="[object Object]"><!--bindings={
"ng-reflect-ng-if": "true"
}--><!----> <!--bindings={
"ng-reflect-ng-template-outlet-context": "[object Object]"
}--></label><!--bindings={
"ng-reflect-ng-if": "false"
}--><!--bindings={}--><!--bindings={}--><div class="ui-dropdown-trigger ui-state-default ui-corner-right"><span class="ui-dropdown-trigger-icon ui-clickable pi pi-caret-down" ng-reflect-klass="ui-dropdown-trigger-icon ui-cl" ng-reflect-ng-class="pi pi-caret-down"></span></div><!--bindings={}--></div></p-dropdown></span><!--bindings={
"ng-reflect-ng-if": "false"
}--></div>