Если для раскрывающегося элемента нет уникального селектора - чтобы вы могли его захватить - тогда вы можете использовать XPath с contains(text(), {string})
, выполнять поиск внутри тега контейнера, в данном случае это <span>
. После того, как мы захватили элемент, простой click
будет имитировать, что реальный пользователь выбирает элемент.
(В последних трех строках я поставил проверку, чтобы увидеть, мы успешно выбрали вариант раскрывающегося списка.)
Давайте посмотрим на него в случае варианта «Один»:
const optionSingle = await page.$x('//span[contains(text(), "Single")]')
await optionSingle[0].click()
// if we did everything correctly the `'.selected, .item'` classes will be applied on the selected item
const selectedItemInnerText = await page.evaluate(el => el.innerText, (await page.$$('.selected, .item'))[0])
selectedItemInnerText === 'Single' ? console.log('We\'ve succesfully selected the item :)') : console.log('Something went wrong :(')
Примечание: Возможно, вам придется щелкнуть внутри список сначала. Очевидно, я не вижу CSS в вашем примере, поэтому я не могу сказать, требует ли этот конкретный c случай этого или параметры могут быть выбраны без него.
Предложение: Тест из XPath (или селектора) в Chrome DevTools, например: $x('//span[contains(text(), "Single")]')[0].click()
. Если он выберет желаемый вариант: он будет работать и в кукольнике.