Javascript 如何使用Puppeter检查async/await中是否存在元素

Javascript 如何使用Puppeter检查async/await中是否存在元素,javascript,async-await,puppeteer,Javascript,Async Await,Puppeteer,在检查元素是否存在后,在页面上记录该元素时遇到问题。我所指的代码块位于“//phone”注释下 这段代码循环通过页面上的每个部分(部分中的部分),并记录“公司”和“电话”。“电话”可能在某些部分中不存在,所以我想我应该通过if语句来检查它是否存在。这将创建一个错误=“错误:未能找到与选择器匹配的元素”。mn contact phone”“如何解决此问题 (async () => { try { const browser = await puppeteer.laun

在检查元素是否存在后,在页面上记录该元素时遇到问题。我所指的代码块位于“//phone”注释下

这段代码循环通过页面上的每个部分(部分中的部分),并记录“公司”和“电话”。“电话”可能在某些部分中不存在,所以我想我应该通过if语句来检查它是否存在。这将创建一个错误=“错误:未能找到与选择器匹配的元素”。mn contact phone”“如何解决此问题

(async () => {
    try {
        const browser = await puppeteer.launch({ headless: true });
        const page = await browser.newPage();

        // loop through pages
        for (let pg = 1; pg < 5; pg++) {
            await page.goto("webpage");

            // record number of sections
            const sections = await page.$$("#mn-members-listings > div");

            // loop through each section
            for (const section of sections) {
                // company
                let company = await section.$eval(
                    "div.mn-searchlisting-title",
                    comp => comp.innerText
                );

                // phone --> THIS IF/ELSE THROWS AN ERROR
                if (section.$(".mn-contact-phone").length > 0) {
                    let phone = await section.$eval(".mn-contact-phone", phn => phn.innerText);
                } else {
                    let phone = "";
                }

                console.log(`Company = ${company} | Phone = ${phone}`);
            }
        }
        await browser.close();
    } catch (error) {
        console.log(`Our error is = ${error}`);
    }
})();
(异步()=>{
试一试{
const browser=wait puppeter.launch({headless:true});
const page=wait browser.newPage();
//循环浏览网页
对于(设pg=1;pg<5;pg++){
等待页面。转到(“网页”);
//记录节数
const sections=等待页面。$$(“#mn成员列表>div”);
//循环通过每个部分
适用于(施工路段,共路段){
//公司
让公司=等待部分。$eval(
“div.mn-searchlisting-title”,
comp=>comp.innerText
);
//电话-->此IF/ELSE引发错误
如果(第.$(“.mn联系人电话”)。长度>0){
let phone=等待部分。$eval(“.mn联系人电话”,phn=>phn.innerText);
}否则{
让电话=”;
}
log(`Company=${Company}| Phone=${Phone}`);
}
}
等待浏览器关闭();
}捕获(错误){
log(`ourerror is=${error}`);
}
})();
来自:

该方法在页面中运行
document.querySelector
。如果没有元素 匹配选择器,返回值解析为
null

1)
null
没有长度

2)
ElementHandle.$
返回承诺

将条件更改为:

if(等待部分.$(“.mn联系电话”))
或者,如果存在多个元素:

if(等待部分.$$(“.mn联系电话”).length>0)