json.stringify() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
The json.stringify()
静态方法是 JavaScript 中的内置函数,可将 JavaScript 值转换为 JSON 字符串,如果指定了替换函数,则可选择替换值;如果指定了替换数组,则可选择仅包含指定的属性。
The json.stringify()
方法接受一个、两个或三个参数,例如:
-
Value:要转换为 JSON 字符串的 JavaScript 对象或值。
-
替代品(可选):它是一个函数,可用于修改正在转换的对象的值和属性。
-
空间(可选):一个字符串或数字,可用于在输出 JSON 字符串中插入空格或换行符以提高可读性。
根本原因
错误...
TypeError: JSON.stringify is not a function
如果程序试图使用JSON.stringify()
非对象上的方法或未为特定对象定义该方法时。举个例子:
var person = "undetectedSelenium";
var jsonString = JSON.stringify(name);
console.log(jsonString);
在上面的代码块中,我们尝试使用以下方法将字符串值转换为 JSON 字符串:JSON.stringify()
方法。JSON.stringify()
方法仅适用于 JavaScript 对象和数组。对简单字符串值调用此方法将导致此错误。
要修复此错误,我们可以将字符串值包装在对象或数组中,如下所示:
var person = "undetectedSelenium";
var jsonObject = { "name": person };
var jsonString = JSON.stringify(jsonObject);
console.log(jsonString);
一些常见原因
导致此错误的一些最常见原因是:
- 使用旧版本的 JavaScript
- 语法错误
- 覆盖 JSON 对象
- 数据类型不正确
这个用例
在此用例中,脚本似乎无法使用以下代码行找到该元素:
Element3 = browser.find_element(By.ID, 'scp_cardPage_csc_input')
有效地Element3
仍然是一个非对象。因此会引发错误。
可能的修复
有几种方法可以修复此错误,如下所示:
-
验证是否json.stringify()
定义了方法,以防它没有定义将对象转换为 JSON 字符串的新函数。此解决方案在本身不支持 JSON 对象的旧版浏览器中非常有用。
if (typeof JSON.stringify !== 'function') {
JSON.stringify = function(obj) {
// code to convert obj to a JSON string
};
}
-
在调用之前检查 obj 变量是否是有效的 JSON 对象json.stringify()
方法,可以防止在尝试调用非对象上的方法时抛出类型错误。
if (typeof obj === 'object' && obj !== null) {
var jsonString = JSON.stringify(obj);
}
-
使用第三方 JSON 库,例如MyJSON
将对象转换为 JSON 字符串。
var jsonString = MyJSON.stringify(obj);
-
使用 try-catch 块来防止发生错误时程序崩溃:
try {
var jsonString = JSON.stringify(obj);
} catch (e) {
console.error('Error: ' + e.message);
}
前面的路
此问题与以下内容无关硒 Python 客户端 https://pypi.org/project/selenium/但是源代码有问题Chrome驱动程序 https://stackoverflow.com/a/59927747/7429447并需要解决Chrome驱动程序 team.
tl; dr
- [???? Bug]:org.openqa.selenium.WebDriverException:未知错误:Runtime.callFunctionOn 抛出异常:TypeError:value.hasOwnProperty 不是 Object.stringify 中的函数 https://github.com/SeleniumHQ/selenium/issues/12187
- 问题 4481:org.openqa.selenium.WebDriverException:未知错误:Runtime.callFunctionOn 引发异常:TypeError:value.hasOwnProperty 不是 Object.stringify 中的函数 https://bugs.chromium.org/p/chromedriver/issues/detail?id=4481