无法使用 Puppeteer Js select 下拉值
Unable to select the dropdown value using Puppeteer Js
我正在使用 Puppeteer JS,我正在尝试 select 下拉列表的第一个元素,请指教。
在输入文本中输入城市名称后,我需要 select 下拉列表的第一个元素。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
const page1=await page.goto('https://www.srinu.com');
await page.screenshot({path: 'example.png'});
const date = '#SearchBoxContainer > div > div > div.IconBox.IconBox--autocomplete > div > div > input';
await page.click(date);
await page.type(date, 'China');
await page.select('#data-text', 'Chinatown')
// const option = (await page.$x(
// '//*[@id="SearchBoxContainer"]/div/div/div[5]/div/div/ul/li[1]'
// ))[0].click();
我尝试了两种不同的方法,select 并单击,其中 none 有效。
您的代码中缺少两件事:
- 键入后单击的右侧选择器 'China'
- 等待下拉列表 DOM 元素在键入 'China' 后加载,以便可以单击它们。
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('https://www.agoda.com');
await page.screenshot({path: 'example.png'});
const date = '#SearchBoxContainer > div > div > div.IconBox.IconBox--autocomplete > div > div > input';
await page.click(date);
await page.type(date, 'China');
// Fix:
const firstElement = 'ul.AutocompleteList > li.Suggestion.Suggestion__categoryName:nth-child(1) > ul.Suggestion__categoryName_container > li.Suggestion__categoryName_item:nth-child(1)';
await page.waitForSelector(firstElement);
await page.click(firstElement);
})();
这对我有用.........
等待page.select('select[id="dropdownId" or #className]', 'value')
我正在使用 Puppeteer JS,我正在尝试 select 下拉列表的第一个元素,请指教。
在输入文本中输入城市名称后,我需要 select 下拉列表的第一个元素。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
const page1=await page.goto('https://www.srinu.com');
await page.screenshot({path: 'example.png'});
const date = '#SearchBoxContainer > div > div > div.IconBox.IconBox--autocomplete > div > div > input';
await page.click(date);
await page.type(date, 'China');
await page.select('#data-text', 'Chinatown')
// const option = (await page.$x(
// '//*[@id="SearchBoxContainer"]/div/div/div[5]/div/div/ul/li[1]'
// ))[0].click();
我尝试了两种不同的方法,select 并单击,其中 none 有效。
您的代码中缺少两件事:
- 键入后单击的右侧选择器 'China'
- 等待下拉列表 DOM 元素在键入 'China' 后加载,以便可以单击它们。
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('https://www.agoda.com');
await page.screenshot({path: 'example.png'});
const date = '#SearchBoxContainer > div > div > div.IconBox.IconBox--autocomplete > div > div > input';
await page.click(date);
await page.type(date, 'China');
// Fix:
const firstElement = 'ul.AutocompleteList > li.Suggestion.Suggestion__categoryName:nth-child(1) > ul.Suggestion__categoryName_container > li.Suggestion__categoryName_item:nth-child(1)';
await page.waitForSelector(firstElement);
await page.click(firstElement);
})();
这对我有用.........
等待page.select('select[id="dropdownId" or #className]', 'value')