首页 > 解决方案 > 按文本选择选项,而不是使用 puppeteer 按值选择

问题描述

目标网址:http ://www.supremenewyork.com/shop/jackets/uaxjeqvro/fm9kozqa6

目标元素:#s

问题:无法从下拉列表中选择值。我已经尝试了多种方法,我可以在 Stack Overflow 上找到的唯一相关问题是,[如何从下拉选择中选择一个选项,但这些答案都没有描述如何通过元素的文本而不是值来选择选项选项。

标签: javascriptnode.jspuppeteer

解决方案


这应该可以工作,在https://try-puppeteer.appspot.com/上使用 1.7.0 版进行测试

const browser = await puppeteer.launch();

const page = await browser.newPage();
await page.goto('http://www.supremenewyork.com/shop/jackets/uaxjeqvro/fm9kozqa6');

let $elemHandler = await page.$('#s');
let properties = await $elemHandler.getProperties();
for (const property of properties.values()) {
  const element = property.asElement();
  if (element){
    let hText = await element.getProperty("text");
    let text = await hText.jsonValue();
    if(text==="Large"){
       let hValue = await element.getProperty("value");
       let value = await hValue.jsonValue();
      await page.select("#s",value); // or use 58730
      console.log(`Selected ${text} which is value ${value}.`);
    }
  }
}
await browser.close();

推荐阅读