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