async scrape(locator) {
console.log("Locator passed in is" + locator);
}
为什么控制台日志显示[object Object]作为参数的输出?它不应该返回传入的值吗?
以下是调用该函数的代码:
Scenario('Scrape The Full Menu pricing and calorie data @scrapewebsite, {retries: 0}, async (I) => {
I.waitForElement({"xpath":".//select"});
rawMenuItems = await I.getElementsText({"xpath":".//*[contains(@data-ng-bind-html, 'item.title')]"});
uniqueMenuItems = [...new Set(rawMenuItems)];
for(let b = 0; b < uniqueMenuItems.length; b++ )
{
let locationVar = {"xpath":".//*[text()=\"" + uniqueMenuItems[b] + "\"]//following::*[@class=\"productControllers custom-product-ctrls\"][1]/div/div/select"};
uniqueMenuItems[b] = uniqueMenuItems[b].replace(/®.*/, "");
drinks[b] = await I.scrape(locationVar);
}
});
答案 0 :(得分:3)
为什么控制台日志显示[object Object]作为参数的输出?它不应该返回传入的值吗?
该函数不会将任何东西变成其他东西。您要传递给scrape
,locationVar
的值已经是对象({"xpath": ...}
)。
您正在尝试将字符串与对象连接起来。为此,JavaScript将对象转换为字符串,并且对象的默认字符串表示形式为[object Object]
:
console.log('' + {});
// same as
console.log({}.toString())
将对象作为第二个参数传递给console.log
:
console.log("Locator passed in is", locator);
// ^^
浏览器将在控制台中呈现该对象的更有用的表示形式。