如何用Puppeteer修改Wyndham网站滑块的aria-valuemax属性
问题
在温德姆(Wyndham)酒店网站中,我尝试将类为ui-slider-handle的元素的aria-valuemax值修改为200,但无法定位该元素。

我的尝试
最小可复现代码
const puppeteer = require('puppeteer-extra'); const fs = require('fs/promises'); // * 主函数 let browser; async function wyndhamScan() { browser = await puppeteer.launch({ headless: false }); const [page] = await browser.pages(); const ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"; await page.setUserAgent(ua); await page.setViewport({ width: 1065, height: 10700 }); // 访问目标网站 await page.goto('https://www.wyndhamhotels.com/wyndham', { waitUntil: "domcontentloaded" }); // 输入目的地 await page.type('[name="destination"]', 'Chicago, IL, USA' ); await page.waitForTimeout(1000); // 点击搜索按钮 await page.click('.search-btn.btn-primary'); // ------------------------------------------ 跳转至结果页 ---------------------------------------- } //! 尝试修改滑块最大值 /* const priceSliderSelector = '[class^="ui-slider-range"]'; const priceSlider = await page.$(priceSliderSelector); if (priceSlider) { await page.evaluate((priceSlider) => { priceSlider.aria-valuemax = constants.MAX_PRICE; }) } // * 调用主函数 (async () => { console.log('启动温德姆爬虫程序...'); await wyndhamScan() .catch(err => console.error(err)) .finally(() => browser?.close()); })();
尝试1
// 滑动价格滑块 /* const priceSliderSelector = '[class^="ui-slider-range"]'; const priceSlider = await page.$(priceSliderSelector); if (priceSlider) { await page.evaluate((priceSlider) => { priceSlider.aria-valuemax = constants.MAX_PRICE; }) }
尝试2
await page.evaluate(() => { // const maxSliderVal = document.querySelector('.price-slider-cmp span.max-slider-val-v2'); const maxSliderVal = document.querySelector('#pricerangefilter-v2 span[class^="ui-slider-handle"]'); if (maxSliderVal) { console.log(`滑块当前最大值: ${maxSliderVal.getAttribute('aria-valuemax')}`); maxSliderVal.textContent = maxPrice; // 将'New Value'替换为你想要的值 } else { console.log('未找到maxSliderVal元素'); } });
内容的提问来源于stack exchange,提问作者Nelson Mak
相关产品推荐
相关产品推荐

