Javascript 木偶演员打开下拉菜单,然后点击[1st 2nd 3rd…]选项

Javascript 木偶演员打开下拉菜单,然后点击[1st 2nd 3rd…]选项,javascript,puppeteer,Javascript,Puppeteer,我一直在尝试让木偶演员从下拉菜单中选择一个选项,这样我就可以从上面的网站上获取信息 1.我在为木偶演员声明正确的选择器时遇到问题。 我的意思是在告诉木偶演员点击段落末尾的“制造商”之后。我似乎无法点击(或者选择??)一个选项。 此下拉菜单中的默认选项是选择制造商 2.我还想知道如何在不硬编码的情况下选择第二个、第三个和第四个选项 我甚至还没有开始搜集信息/悲伤;( 我认为有几个问题。第一,有时该页面有一个调查弹出窗口,您可能需要先关闭。第二,您需要在单击.manufacturer search

我一直在尝试让木偶演员从下拉菜单中选择一个选项,这样我就可以从上面的网站上获取信息

1.我在为木偶演员声明正确的选择器时遇到问题。 我的意思是在告诉木偶演员点击段落末尾的“制造商”之后。我似乎无法点击(或者选择??)一个选项。 此下拉菜单中的默认选项是选择制造商

2.我还想知道如何在不硬编码的情况下选择第二个、第三个和第四个选项

我甚至还没有开始搜集信息/悲伤;(


我认为有几个问题。第一,有时该页面有一个调查弹出窗口,您可能需要先关闭。第二,您需要在单击
.manufacturer search modal
链接和尝试与选择框交互之间等待一段时间,因为框中的选项不会立即填充(可能是向服务器请求获取选项列表)。第三,我认为选择框有点特殊,点击它们不起作用,但你可以使用。把这些放在一起,再加上一些按编号选择项目的丑陋代码:

异步函数spider(){ 试一试{ let browser=wait puppeter.launch({headless:false}); let page=等待browser.newPage(); 等待页面。转到('https://www.nhtsa.gov/ratings'); 试一试{ //给“接受我们的调查”框一个弹出的机会,如果弹出,请将其关闭 wait page.waitFor('.acsCloseButton',{timeout:1000}); 等待页面。单击(“.acsCloseButton”) }抓住{ } 等待页面。单击('a[data target=“.manufacturer search modal”]”); //等待填充选项 wait page.waitFor('选项:第n个子项(2)'); //搜索奥迪 等待页面。选择(“选择”、“奥迪”); 等待页面。单击(“.manufacturer search submit”); //在下拉列表中选择第三个元素 //也许有更好的方法可以做到这一点 const options=等待页面。$$(“选项”); 常量属性=等待选项[2]。getProperties(); const value=await properties.get(“'u value').jsonValue(); 等待页面。选择('选择',值); 等待页面。单击(“.manufacturer search submit”); }捕获(错误){ console.log(错误) 等待浏览器关闭(); } }
我认为有几个问题。第一,有时该页面会弹出一个调查窗口,您可能需要先关闭它。第二,您需要在单击
.manufacturer search modal
链接和尝试与选择框交互之间等待一段时间,因为框中的选项不会立即填充(可能是向服务器请求获取选项列表)。第三,我认为选择框有点特殊,点击它们不起作用,但你可以使用。把这些放在一起,再加上一些按编号选择项目的丑陋代码:

异步函数spider(){ 试一试{ let browser=wait puppeter.launch({headless:false}); let page=等待browser.newPage(); 等待页面。转到('https://www.nhtsa.gov/ratings'); 试一试{ //给“接受我们的调查”框一个弹出的机会,如果弹出,请将其关闭 wait page.waitFor('.acsCloseButton',{timeout:1000}); 等待页面。单击(“.acsCloseButton”) }抓住{ } 等待页面。单击('a[data target=“.manufacturer search modal”]”); //等待填充选项 wait page.waitFor('选项:第n个子项(2)'); //搜索奥迪 等待页面。选择(“选择”、“奥迪”); 等待页面。单击(“.manufacturer search submit”); //在下拉列表中选择第三个元素 //也许有更好的方法可以做到这一点 const options=等待页面。$$(“选项”); 常量属性=等待选项[2]。getProperties(); const value=await properties.get(“'u value').jsonValue(); 等待页面。选择('选择',值); 等待页面。单击(“.manufacturer search submit”); }捕获(错误){ console.log(错误) 等待浏览器关闭(); } }
const puppeteer = require('puppeteer');

async function spider() {
    try {
        let browser = await puppeteer.launch({ headless: false});
        let page = await browser.newPage();
        await page.goto('https://www.nhtsa.gov/ratings');
        await page.click('a[data-target=".manufacturer-search-modal"]');
        await page.click('select');
        await page.click('option[value="AUDI"]');

    } catch(error) {
        console.log(error)
        await browser.close();
    }
}

export default spider