简体   繁体   English

Puppeteer - 如何从 optgroup 中的下拉选择中选择一个选项

[英]Puppeteer - How to select an option from dropdown select within an optgroup

I'm trying to select an option from dropdown select which contains an optgroup.我正在尝试从包含 optgroup 的下拉选择中选择一个选项。

    <select name="someName">
      <optgroup label="A">
        <option value="AC">AC</option>
        <option value="Abarth">Abarth</option>
        <option value="Acura">Acura</option>
        <option value="Aixam">Aixam</option>
        <option value="Alfa Romeo">Alfa Romeo</option>
        <option value="Alpina">Alpina</option>
       </optgroup>
       <optgroup label="B">
        <option value="Bentley">Bentley</option>
        <option value="Bugatti">Bugatti</option>
       </optgroup>
    </select>

How I can select an option from the select above regardless its optgroup?无论其 optgroup,我如何从上面的选择中选择一个选项?

If there's no a optgroup the Standart selecting is working如果没有 optgroup,则 Standart 选择正在工作

await page.select('select[name="someName"]', 'Alfa Romeo');

It works with and without optgroup element, page.select() does handle it for you.无论有无optgroup元素,它都可以使用, page.select()会为您处理它。

For showcasing it, here's an example which selects different elements and waits 2 seconds between it.为了展示它,这里有一个示例,它选择不同的元素并在它们之间等待 2 秒。 Watch it in browser!在浏览器中观看!


var puppeteer = require('puppeteer')
const html = `
<select name="someName">
<optgroup label="A">
  <option value="AC">AC</option>
  <option value="Abarth">Abarth</option>
  <option value="Acura">Acura</option>
  <option value="Aixam">Aixam</option>
  <option value="Alfa Romeo">Alfa Romeo</option>
  <option value="Alpina">Alpina</option>
 </optgroup>
 <optgroup label="B">
  <option value="Bentley">Bentley</option>
  <option value="Bugatti">Bugatti</option>
 </optgroup>
</select>
`
// utility..
const wait = async (ms) => {
    return new Promise(res => {
        setTimeout(res, ms)
    })
}

const main = async() => {
    const browser = await puppeteer.launch({ headless: false })

    const page = await browser.newPage()

    await page.setContent(html)

    await page.select('select[name="someName"]', 'Alfa Romeo');

    await wait(2 * 1000)

    await page.select('select[name="someName"]', 'Alpina');

    await wait(2 * 1000)

    await page.select('select[name="someName"]', 'Bugatti');

    await wait(2 * 1000)

    await page.select('select[name="someName"]', 'Bentley');

    console.log('wating.. I am done.')
    await wait(5 * 1000)
    await browser.close()

}

main()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM