#reactjs #selenium #ant-design-pro #playwright #e2e
Вопрос:
Как выбрать опцию в компоненте ant design Select с помощью любой платформы автоматизации e2e? (Я смогу переписать ваше решение драматургу, которым я лично пользуюсь)
Я знаю, что вопрос может показаться простым, поэтому у вас может возникнуть соблазн предложить что-то вроде await click('#option-id')
«Я действительно хочу, чтобы это было так просто». Я перепробовал почти все, начиная с простого щелчка, абсолютного позиционирования мыши virtual={false}
, отправки пользовательских событий мыши и клавиатуры, комбинаций тайм-аутов/пылесосов/принудительных щелчков и всего остального, что указано в этом списке, к сожалению, ничего не работает.
Я считаю, что на этот вопрос может ответить только тот, у кого есть такая логика выбора опций в его текущем коде, потому что компонент постоянно обновляется, и любые предположения, которые вы делаете сейчас, будут отличаться примерно через год.
Я также читаю каждый выпуск об этой проблеме, и сопровождающим/разработчикам, похоже, все равно, потому что они не используют такие тесты.
Я не хочу никого отговаривать от ответа, просто чтобы вы знали, что я пытался.
Комментарии:
1. Вы ищете ответы только в JS? Java или Python не помогут?
Ответ №1:
Дескриптор элемента Драматурга содержит селектор «Все запросы«. Если хотя бы часть xpath останется прежней, вы можете использовать $$
селектор.
Функция вернет <Promise<Array<ElementHandle>>>
данные, которые вы затем можете разрешить и подключить к индексу выбора, который вы хотите сделать.
Например —
const selector = "//div[contains(@attribute, 'selection-options-partial-id-text')]"
const allSelectionOptions = await page.$(selector);
await allSelectionOptions[index].click();
Это сработает, если предположить, что все параметры в разделе Select
должны иметь общую часть в своем xpath или, если они определены, их data-test-id
.
Комментарии:
1. В своем вопросе я заявил, что
await click('#option-id')
это ничего не делает, вы просто указали способ получения дескрипторов по индексу, что не является проблемой, с которой я сталкиваюсь. @SumitLubal Должен быть тривиальным, чтобы привести рабочий пример.2. Хорошо, не могли бы вы опубликовать отрывок из того, над чем вы работаете?
3. Вы можете использовать заголовок ant.design/components/select/# и попытаться выбрать опцию с помощью платформы автоматизации по вашему выбору.
4. Я не знаю, что я делал не так раньше, но теперь я смог выбрать опцию без проблем обычными двумя щелчками мыши, я отмечаю ответ выше как принятый, спасибо.