setversionNumber = async (index, page) => {
const input = await page.evaluateHandle((i) => {
const versionView = document.getElementsByClassName("mx-dataview mx-name-dataView9")[0];
const inputfield = versionView.getElementsByTagName('input')[i];
if (inputfield.value === null || inputfield.value === '' ) {
console.info('returning input');
return inputfield;
}
console.info('returning null');
return null;
}, index);
if (await input !== null) {
console.info('input is filled');
const content = await page.evaluate((i) => i.value, input);
console.log(content);
await input.type('1');
} else {
console.info('input is empty');
}
Run Code Online (Sandbox Code Playgroud)
我得到了这段代码,它需要获取一个输入字段,如果输入的值为空,则输入“1”。当我在浏览器中运行它时,控制台会记录“reruning null”,这是预期的,因为输入值为空。
但是,当检查返回的输入是否实际上为空时,它会记录“输入已填充”。之后会抛出错误,提示“无法读取 null 的属性“值””。这意味着输入实际上为空。所以我认为我只是没有使用正确的检查来查看这个输入对象是否实际上为空。
是否有其他方法来检查 page.evaluateHandle 返回的对象是否为空/null?