puppeteer semanti c -ui-response раскрывающийся список как выбирать параметры - PullRequest
0 голосов
/ 17 июня 2020
    <div role="listbox" aria-disabled="false" aria-expanded="false" class="ui selection dropdown content--content-type:-selector" tabindex="0" style="width: 100%;"><div class="default text" role="alert" aria-live="polite" aria-atomic="true">Select type</div><i aria-hidden="true" class="dropdown icon"></i><div class="menu transition"><div role="option" aria-checked="false" aria-selected="true" class="selected item" style=`enter code here`"pointer-events: all;"><span class="text">Single</span></div><div role="option" aria-checked="false" aria-selected="false" class="item" style="pointer-events: all;"><span class="text">Multi</span></div><div role="option" aria-checked="false" aria-selected="false" class="item" style="pointer-events: all;"></div></div></div>

Очень новичок в кукловодах. Я хочу выбрать варианты раскрывающегося списка.

1 Ответ

0 голосов
/ 17 июня 2020

Если для раскрывающегося элемента нет уникального селектора - чтобы вы могли его захватить - тогда вы можете использовать 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(). Если он выберет желаемый вариант: он будет работать и в кукольнике.

...