puppeteer语义-ui-反应下拉菜单如何选择选项

时间:2020-06-17 12:14:30

标签: puppeteer semantic-ui semantic-ui-react

    <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 :(得分:0)

如果dropdown元素没有唯一的选择器-因此可以抓住它-然后可以将XPath与contains(text(), {string})一起使用,请在容器标签内进行搜索,在这种情况下,它是{{1 }}。抓取项目后,简单的click将模拟真实用户选择元素。

(在最后三行中,我进行了验证,以查看是否成功选择了下拉选项。)

让我们看看“单一”选项的情况:

<span>

注意:您可能需要先在列表框中单击。显然,我看不到您的示例的CSS,因此无法确定是否需要此特定情况,或者无法选择该选项。

建议:像这样 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 :(') 在Chrome DevTools中测试XPath(或选择器)。如果确实选择了所需的选项,则它也可以在操纵up中使用。