андрей петров
Знаток
(429)
6 месяцев назад
Чтобы выбрать элемент из выпадающего списка, можно использовать "keydown", эмулируя нажатие клавиши стрелки вниз и клавиши Enter. Вот как можно модифицировать твой код:
async function processZone1(zoneValue, addButton) {
addButton.click();
const smallModal = await waitForElm('div.ModalV2--G14QC.src-styles-commonStyles-module__modalBody--TFAd4');
const zoneNameInput = smallModal.querySelector('input[data-test="select-single-input-data-test"]');
// Вводим значение
zoneNameInput.focus();
zoneNameInput.value = zoneValue;
zoneNameInput.dispatchEvent(new Event('input', { bubbles: true }));
// Ожидаем появления списка секторов
const sectorList = await waitForElm('ul[data-test="select-single-dropdown-data-test"]');
// Эмулируем нажатие клавиши вниз
zoneNameInput.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 40, key: 'ArrowDown' }));
// Эмулируем нажатие клавиши Enter
zoneNameInput.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 13, key: 'Enter' }));
// Ждем сохранения
const saveButton = await waitForElm('button.button--ruJL- size--M--aJZML variant--primary--tMj-Q');
if (saveButton) {
saveButton.click();
}
await waitForElmT
oBeRemoved(smallModal);
}
Этот код сначала эмулирует ввод значения, затем ожидает появления списка секторов, эмулирует нажатие клавиши вниз для выбора первого элемента и затем клавиши Enter для подтверждения выбора.
RemembranceПрофи (589)
6 месяцев назад
Я тоже изначально так хотел, но к сожалению стрелка вниз не работает для выбора элемента из списка. А можно ли как-то нажать на сам элемент (например через click() )
RemembranceПрофи (589)
6 месяцев назад
Огромное спасибо, добавил ещё константу для первого сектора
const firstSector = await waitForElm('div > div.ModalV2Content--jlidV > div:nth-child(2) > div > div.popper--XJqLm.fluid--IAePK > div > li:nth-child(1)');
Вот мой скрипт
async function processZone1(zoneValue, addButton) {
addButton.click ();
const smallModal = await waitForElm('div.ModalV2--G14QC.src-styles-commonStyles-module__modalBody--TFAd4');
const zoneNameInput = smallModal.querySelector('input[data-test="select-single-input-data-test"]');
zoneNameInput.focus();
zoneNameInput.value = zoneValue;
zoneNameInput.dispatchEvent(new Event('input', { bubbles: true }));
const saveButton = await waitForElm('button.button--ruJL- size--M--aJZML variant--primary--tMj-Q');
if (saveButton) {
saveButton.click ();
}
await waitForElmToBeRemoved(smallModal);
Всё работает до того момента как нужно выбрать элемент
Т.е после строчки zoneNameInput.dispatchEvent(new Event('input', { bubbles: true }));
Нужно сделать так чтобы при вводе какой-нибудь инфы в строчку вылезает окно с выбором секторов и нажать на самый первый из них. Помогите Пж. Скрины сайта прилагаю