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