Cucumber Puppeteer:将参数传递给箭头函数时出现问题
Cucumber Puppeteer: Problem passing argument into arrow function
这是来自 cucumber puppeteer 项目中的 world.js。
第一个代码块导致错误。但是如果我像在第二个代码块中那样对选择器进行硬编码,就不会出现错误。 如何将参数传递给箭头函数,这样我就不必对选择器进行硬编码? TIA
硬编码选择器:有效
async getOriginalForecastDate(selectorTitle, selectorDate, wait = 0) {
await this.page.waitForSelector(selectorTitle);
await this.page.waitForSelector(selectorDate);
const originalDateStr = await this.page.evaluate(selectorDate => {
let result = document.querySelector('div[class="rollmodel_cal_date"]');
////let result = document.querySelector(selectorDate);
return result.innerText.trim();
});
const originalDate = utils.constructDate(originalDateStr);
return originalDate;
}
尝试将选择器作为参数传递:不起作用
async getOriginalForecastDate(selectorTitle, selectorDate, wait = 0) {
await this.page.waitForSelector(selectorTitle);
await this.page.waitForSelector(selectorDate);
const originalDateStr = await this.page.evaluate(selectorDate => {
/////let result = document.querySelector('div[class="rollmodel_cal_date"]');
let result = document.querySelector(selectorDate);
return result.innerText.trim();
});
const originalDate = utils.constructDate(originalDateStr);
return originalDate;
}
你应该在评估箭头函数之后传递参数。像这样 page.evaluate(pageFunction, ...pageFunction arguments)
。 docs.
async getOriginalForecastDate(selectorTitle, selectorDate, wait = 0) {
await this.page.waitForSelector(selectorTitle);
await this.page.waitForSelector(selectorDate);
const originalDateStr = await this.page.evaluate(
(selectorDate, arg1, arg2) => {
/////let result = document.querySelector('div[class="rollmodel_cal_date"]');
let result = document.querySelector(selectorDate);
return result.innerText.trim();
},
selectorDate,
arg1,
arg2,
);
const originalDate = utils.constructDate(originalDateStr);
return originalDate;
}
这是来自 cucumber puppeteer 项目中的 world.js。
第一个代码块导致错误。但是如果我像在第二个代码块中那样对选择器进行硬编码,就不会出现错误。 如何将参数传递给箭头函数,这样我就不必对选择器进行硬编码? TIA
硬编码选择器:有效
async getOriginalForecastDate(selectorTitle, selectorDate, wait = 0) {
await this.page.waitForSelector(selectorTitle);
await this.page.waitForSelector(selectorDate);
const originalDateStr = await this.page.evaluate(selectorDate => {
let result = document.querySelector('div[class="rollmodel_cal_date"]');
////let result = document.querySelector(selectorDate);
return result.innerText.trim();
});
const originalDate = utils.constructDate(originalDateStr);
return originalDate;
}
尝试将选择器作为参数传递:不起作用
async getOriginalForecastDate(selectorTitle, selectorDate, wait = 0) {
await this.page.waitForSelector(selectorTitle);
await this.page.waitForSelector(selectorDate);
const originalDateStr = await this.page.evaluate(selectorDate => {
/////let result = document.querySelector('div[class="rollmodel_cal_date"]');
let result = document.querySelector(selectorDate);
return result.innerText.trim();
});
const originalDate = utils.constructDate(originalDateStr);
return originalDate;
}
你应该在评估箭头函数之后传递参数。像这样 page.evaluate(pageFunction, ...pageFunction arguments)
。 docs.
async getOriginalForecastDate(selectorTitle, selectorDate, wait = 0) {
await this.page.waitForSelector(selectorTitle);
await this.page.waitForSelector(selectorDate);
const originalDateStr = await this.page.evaluate(
(selectorDate, arg1, arg2) => {
/////let result = document.querySelector('div[class="rollmodel_cal_date"]');
let result = document.querySelector(selectorDate);
return result.innerText.trim();
},
selectorDate,
arg1,
arg2,
);
const originalDate = utils.constructDate(originalDateStr);
return originalDate;
}