Невозможно выбрать значение радиокнопки с помощью Cypress

Я пытаюсь выбрать значение радиокнопки (реакция-радио-кнопки) с помощью Cypress. Но похоже, что это не работает.

Вот мой код:

<Radio
  value = {this.state.input.radio}
  onChange = {(value) => this.updateInput("radio", value)}
  horizontal
  className = "radioGroup"
  data-cy = "radioButton"
>
  <RadioButton
    value = "1"
    iconSize = {20}
    padding = {-1}
  ></RadioButton>
  <p>Yes</p>
  <RadioButton
    value = "0"
    iconSize = {20}
    padding = {-1}
  ></RadioButton>
  <p>No</p>
</Radio>;

Я пытаюсь получить доступ и изменить значения с помощью data-cy с помощью этого кода:

Пока эта строка теста работает:

cy.get("[data-cy=radioButton]").first().click()

Но это не меняет значения.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
2
0
38
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Атрибут data-cy находится на <Radio>, а не на <RadioButton>. Я ожидал, что вам нужно перейти к дочерним элементам и щелкнуть один из них - хотя cy.get("[data-cy=radioButton]").first().click() работает, поэтому я не вижу полной картины.

У вас есть onChange = {(value) => this.updateInput("radio", value)}, поэтому вам, вероятно, также нужно инициировать событие изменения.

Пытаться

cy.get("[data-cy=radioButton]")
  .children()
  .first()
  .click()
  .trigger('change');

Попробуйте принудительно выполнить команду:

cy.get("[data-cy=radioButton]").first().click({force:true})

Почему сила: правда?

Nanker Phelge 30.03.2021 16:19

Другие вопросы по теме