javascript - Javascript无法读取null的属性'innerText' - puppeteer
问题描述
使用此功能时有时会出现此错误:我的功能工作了 2/3 次,但我想更正它。我正在使用 puppeteer 导航并检查我的代理是否正常工作。
无法将属性“innerText”设置为 null
请问怎么修...
这是我的代码。
let proxyValidity = waiting("Checking proxy Validity", 800);
try {
await LOG('Trying to validate IP using an API');
await page.goto(ipValidityUrl, { waitUntil: "load", timeout: 30000 });
} catch (err) {
await LOG('Error occured during loading IP validation API');
await page.close();
await closeBrowser(browser);
stopWaiting(proxyValidity, (stdClrs.FgRed + "ERROR"));
return {
errorId: 3,
msg: 'Unknown Proxy Error',
error: err
};
}
await LOG('IP validation URL loaded');
let proxyInfo = await page.evaluate(() => {
let div = document.querySelector('body > pre');
console.log(div);
jsonObject = JSON.parse(div.innerText);
key = Object.keys(jsonObject);
console.log(jsonObject[key]);
return jsonObject[key];
})
await LOG(`Proxy information recorded: ${proxyInfo}`);
await LOG('Checking for validity of IP');
let isValid = defaultData.proxyAllowedCountries.find((element) => {
return (proxyInfo[0] == element)
}) == proxyInfo[0];
错误代码:
UnhandledPromiseRejectionWarning: Error: Evaluation failed: TypeError: Cannot read property 'innerText' of null
at __puppeteer_evaluation_script__:4:35
[...]
解决方案
您可以waitForSelector
在调用评估函数之前添加
await page.waitForSelector('body > pre');
await page.evaluate(...);
推荐阅读
- javascript - 在滚动时更改徽标 div 背景颜色
- javascript - 事件侦听器在普通旧函数 () {} 中不起作用
- r - R中定积分的蒙特卡罗方法
- kotlin - 使用 javax.script.ScriptEngineManager 在 JVM 中评估 Kotlin 的问题
- java - 从 char 到 int 的转换:为什么 (int)givenString.charAt(2) 在 givenString = "11001" 的情况下给出 48?
- ruby-on-rails - 如何使用 Searchkick 分别搜索多个字段?
- javascript - React Native - 在不影响性能/渲染的情况下处理繁重 JS 代码的最佳方法
- javascript - Google App Script 按时间获取表单响应
- python - Altair 和 GeoJSON 文件
- asp.net-mvc - 我可以使用参数更改请求的 uri 吗?