Tengo un problema en mi Cypress donde intento hacer clic en un segundo botón que aún no está deshabilitado o seleccionado. Lo que está sucediendo actualmente es que está seleccionando el botón ya seleccionado y no estoy seguro de por qué.
Aquí hay un ejemplo de html, por lo que si observa el código a continuación, hay dos divs, cada uno de los cuales maneja una fila de selección. Dentro de cada fila hay un botón (enlace <a> ).
Entonces, lo que sucede es que si se selecciona un botón, la clase selected se agrega al <a> element like so :
<a id="event-selection-4191929065" eventid="event-selection-19976412" title="Ronaldo to score 2 or more goals" eventmodule="ODDS_BOOSTS_HOMEPAGE" class="oddsBoostedPrice button__bet eventSelection--link selected" "=""> Es por eso que tengo la verificación para asegurarme de que revisamos cada elemento del botón de probabilidades y si no contiene la clase .selected .
¿Alguien puede ver lo que estoy haciendo mal y cómo solucionarlo?
Este se puede simplificar, porque ya verificaste la clase .button__bet dentro del método oddsButton .
oddsSelectionElements.oddsButton() .each((element, index) => { if (!element.hasClass("disabled") && !element.hasClass("selected")) { cy.wrap(element).click() return false } }) Lo siento, necesita && entre las dos comprobaciones de clase porque cada comprobación es ! (no).
disabled suele ser un atributo, que se verificaría así
oddsSelectionElements.oddsButton() .each((element, index) => { if (!element.attr("disabled") && !element.hasClass("selected")) { cy.wrap(element).click() return false } })Probado con este fragmento de HTML
<button class="oddsBoostedPrice button__bet eventSelection--link selected"></button> <button class="oddsBoostedPrice button__bet eventSelection--link" disabled></button> <button class="oddsBoostedPrice button__bet eventSelection--link"></button> Solo el tercer botón pasa a la instrucción if() .
Puedes intentar cambiar tu condición if a algo como esto:
oddsSelectionElements.oddsButton().each((element, index) => { if (!element.prop("disabled") && !element.hasClass("selected")) { cy.wrap(element).click() return false } })