WebDriverException:未知错误:Runtime.callFunctionOn 抛出异常:TypeError:JSON.stringify 不是使用 Selenium 和 ChromeDriver 的函数

2024-03-02

我使用 Selenium 和 Python 来生成网站上信用卡字段的输入。当你尝试时send_keys到该字段它总是返回此错误。我使用不同的网络驱动程序(Chrome、Edge、Firefox)具有相同的效果。 在字段中显示任何输入之前会弹出错误。

from selenium import webdriver
browser = webdriver.Chrome(r"C:\Users\m234234\Downloads\chromedriver_win32.exe")
...
...
Element3 = browser.find_element(By.ID, 'scp_cardPage_csc_input')
Element3.send_keys('231')

尝试访问的元素:

<input autocomplete="off" maxlength="4" type="text" class="scp_text_input" name="csc" aria-required="true" aria-label="Security Code" aria-describedby="scp_cardPage_csc_error" id="scp_cardPage_csc_input" value="" size="5" onkeypress="return checkNum(event)">

完整错误如下

WebDriverException: unknown error: Runtime.callFunctionOn threw exception: TypeError: JSON.stringify is not a function
    at buildError (<anonymous>:323:18)
  (Session info: chrome=113.0.5672.126)

Update

一旦脚本到达此支付页面(它是第三方支付页面),当它尝试与该页面交互时,它会抛出相同的错误以任何方式,即使我只是尝试检索current_url


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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebDriverException:未知错误:Runtime.callFunctionOn 抛出异常:TypeError:JSON.stringify 不是使用 Selenium 和 ChromeDriver 的函数 的相关文章

  • Pandas:将 pytz.FixedOffset 应用于系列

    我有一个带有timestamp列看起来像这样 0 2020 01 26 05 00 00 08 00 1 2020 01 26 06 00 00 08 00 Name timestamp dtype datetime64 ns pytz F
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • 将列表中的 None 替换为最左边的非 none 值

    Given a None 1 2 3 None 4 None None I d like a None 1 2 3 3 4 4 4 目前我已经用以下方法强制它 def replaceNoneWithLeftmost val last Non
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h
  • Jupyter Notebook 中的深色模式绘图 - Python

    我正在使用 Jupyter Notebook 目前正在使用 JupyterThemes 的深色日光主题 我注意到我的绘图不是处于黑暗模式 并且文本仍然是黑色并且在日光照射的背景上无法读取 JupyterThemes 的自述文件建议在 ipy
  • 线性同余生成器 - 如何选择种子和统计检验

    我需要做一个线性同余生成器 它将成功通过所选的统计测试 我的问题是 如何正确选择发电机的数字以及 我应该选择哪些统计检验 我想 均匀性的卡方频率测试 每代收集10 000个号码的方法 将 0 1 细分为10个相等的细分 柯尔莫哥洛夫 斯米尔
  • 如何上传文件 - sails.js

    我可以下载图像和 pdf 但无法下载文档文件 doc pptx odt 下载文档 doc pptx odt 时 仅将其下载为 ZIP XML 文件 我可以做什么 我在用着 填写上传文件文档 https github com balderda
  • Promise 构造函数回调的主体何时执行?

    假设我有以下代码构造一个Promise function doSomethingAsynchronous return new Promise resolve gt const result doSomeWork setTimeout gt
  • 在 scipy 中创建新的发行版

    我试图根据我拥有的一些数据创建一个分布 然后从该分布中随机抽取 这是我所拥有的 from scipy import stats import numpy def getDistribution data kernel stats gauss
  • Python 导入非常慢 - Anaconda python 2.7

    我的 python import 语句变得非常慢 我使用 Anaconda 包在本地运行 python 2 7 导入模块后 我编写的代码运行得非常快 似乎只是导入需要很长时间 例如 我使用以下代码运行了一个 tester py 文件 imp
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • 在 HDF5 (PyTables) 中存储 numpy 稀疏矩阵

    我在使用 PyTables 存储 numpy csr matrix 时遇到问题 我收到此错误 TypeError objects of type csr matrix are not supported in this context so
  • Python:无法使用 os.system() 打开文件

    我正在编写一个使用该应用程序的 Python 脚本pdftk http www pdflabs com tools pdftk the pdf toolkit 几次来执行某些操作 例如 我可以在 Windows 命令行 shell 中使用
  • 不可见的 reCAPTCHA - 缺少必需的参数:sitekey

    我正在为每个带有具有类的按钮的表单动态加载不可见的 reCAPTCHAg recaptcha 我遇到的问题是验证码未正确加载 我不知道为什么 我按照验证码网站上的文档进行操作 但我不确定如何以及为什么会出现此错误 Uncaught Erro
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • 使用 SERVER_NAME 时出现 Flask 404

    在我的 Flask 配置中 我将 SERVER NAME 设置为 app example com 之类的域 我这样做是因为我需要使用url for with external网址 如果未设置 SERVER NAME Flask 会认为服务器
  • 在python中对列表列表执行行总和和列总和

    我想用python计算矩阵的行和和列和 但是 由于信息安全要求 我无法使用任何外部库 因此 为了创建矩阵 我使用了列表列表 如下所示 matrix 0 for x in range 5 for y in range 5 for pos in
  • 使用 div 或表格来包含链接列更好吗?

    我的页面底部有 3 列链接 每列都放入一个 div 中 所有三个 div 都包装在页面中央的一个大 div 中 这是更适合桌子的东西还是桌子不适合这项工作 您还可以使用 ul http www w3schools com tags tag
  • 如何从react-bootstrap复选框获取值/属性?

    我正在尝试使用反应引导复选框 https react bootstrap github io components html forms controls https react bootstrap github io components
  • R闪亮:使用闪亮的JS从数据表中获取信息

    我想读出所有列名称以及它们在数据表中显示的顺序 由于不同的原因 我无法使用 stateSave 等选项 我对 JS 没有什么把握 但我确信用它可以完成 所以我需要你帮助我 我尝试过类似的代码片段 datatable data callbac

随机推荐

  • 在 CakePHP 中保存空间数据

    我在使用 saveAll 在 CakePHP 中保存空间数据时遇到问题 我真的不想手动编写查询 在 CakePHP 中处理空间数据 https stackoverflow com questions 4598834 handling spa
  • timeout 和 browserTimeout 的区别

    我刚刚开始使用 Selenium Grid 我当前面临的问题是测试崩溃时 浏览器永远保持打开状态 直到我到达并亲自关闭它 以便可以开始下一组测试 我注意到 NODE 配置有两种超时配置 一种用于 timeout另一个用于 browserTi
  • 有没有办法在不加载rubygems的情况下调用ruby1.9?

    所以 ruby 1 9 真的很好 因为它会自动需要 ruby gems 因此当你调用require somegem 不需要首先需要 ruby gems 它就可以工作 这通常很棒 但我有大量使用 ruby 的 shell 脚本 它们通常不依赖
  • 对 static constexpr char[] 的未定义引用

    我想要一个static const char我班上的数组 GCC 抱怨并告诉我我应该使用constexpr 尽管现在它告诉我这是一个未定义的引用 如果我将数组设置为非成员 那么它就会编译 到底是怎么回事 hpp struct foo voi
  • 查找java类中所有对方法的调用

    我有一个包含很多课程的庞大项目 我有一个非常具体的课程 让我们命名它SuperFoo 我需要找到对该方法的所有调用equals 带类型参数Superfoo 希望它是清楚的 所以 再一次 在数千个java文件 或字节码 中我想找到对该方法的所
  • 如何防止 del *.txt 出现“找不到”错误消息?

    在 Windows 批处理文件中 此行 del txt 将给出错误 警告消息 Could Not Find C txt 如果没有与模式 txt 匹配的文件 有没有办法阻止该消息 if exist txt del txt
  • PHP 人类日期范围/持续时间格式

    PHP 制作得非常好 我想知道是否有一个函数可以满足我的需要 对于持续超过一天的事件 人类的格式化方式很复杂 例子 事件一 从 2015 04 20 到 2015 04 22 可以针对人类进行格式化 如下所示 2015 年 4 月 20 2
  • 一次阻塞收集进程 n 个项目 - 完成 1 个项目后立即继续

    我有以下场景 我将数据库中的 50 个作业放入阻塞集合中 每项工作都是长期运行的 可能是 所以我想在单独的线程中运行它们 我知道 最好将它们作为 Task WhenAll 运行并让 TPL 弄清楚 但我想控制同时运行的数量 假设我想同时运行
  • Spring Boot不加载静态资源,它取决于RequestMapping深度

    我在 Spring Boot 应用程序上加载静态文件夹下的文件时遇到问题 问题是 RequestMapping 深度超过 2 之类的 RequestMapping spring xyz The RequestMapping spring 单
  • 为什么结果是NaN?

    var a 10 sayHi function sayHi var a a 10 alert a return a alert a alert sayHi 10 为什么上面的结果不是20和30 我觉得第一个是20 然后是30 functio
  • 如何将 Ada.Real_TIme.Time 转换为字符串?

    我想写一个Ada Real Time Time http www adaic com standards 05rm html RM D 8 html在一个文件中 我怎样才能做到这一点 Thanks 您可以使用Ada Real Time Sp
  • 在 EPPLUS 中读取 xlsx (2007) 文件时出错

    我在尝试读取 Excel 文件时遇到错误 xlsx 保存在Excel 2007 using EPPlus图书馆 一些解决方法 带有 EPPlus v 的 ASP net mvc 5 应用程序4 0 4 0 用户可以从我的网站下载模板文件 然
  • CSS - 创建 9x9 数独网格的最佳方法是什么?

    我正在开展一些项目来改进我的 HTML 和 CSS 其中之一是简单的数独求解器 我需要创建一个网格来放置标签或文本框 我想要一个与此中的网格图像完全相同的网格布局question https stackoverflow com questi
  • Symfony2 更新 bootstrap.php.cache

    最近 我从 symfony com 上提供的 BETA 版本开始了 Symfony2 中的一个项目 过了一段时间 我需要升级到master分支 所以我从github上检索了最新的并将其切换到vendor symfony 但是 我的 boot
  • Firefox 在收到指定内容范围的 206 后不会请求进一步的数据

    为了提供一些背景信息 我有一个
  • 如何使用Java找到偏差

    我想使用以下代码找出两条绘图线之间的偏差 但由于某种原因 它感觉不对 import java awt import java awt event ActionEvent import java awt event ActionListene
  • 如何找到源代码的编译日期?

    是否可以存储并显示项目编译的日期 我想在程序启动时打印此日期 以便了解使用的是哪个版本 目前我都是手工做的 比较麻烦 我正在使用 Visual Studio 2010 C 指定有一个特殊的预处理器宏 称为 DATE 这是编译发生时间的字符串
  • 如何捕获 JDBC 中的特定异常?

    如何捕获特定异常JDBC http en wikipedia org wiki Java Database Connectivity 示例 主键异常或外键异常 最好的且独立于数据库的处理方式SQLException更具体地说 是确定SQL状
  • 在 jQuery 中使用 window.location.hash

    我想使用 jQuery 制作一个褪色导航菜单 其中与当前页面对应的 按下 按钮的行为与 未按下 按钮不同 具体来说 它在悬停时不会褪色为不同的颜色 如果我查看 www guitaracademy nl 上的示例 我会发现他们使用带有 win
  • WebDriverException:未知错误:Runtime.callFunctionOn 抛出异常:TypeError:JSON.stringify 不是使用 Selenium 和 ChromeDriver 的函数

    我使用 Selenium 和 Python 来生成网站上信用卡字段的输入 当你尝试时send keys到该字段它总是返回此错误 我使用不同的网络驱动程序 Chrome Edge Firefox 具有相同的效果 在字段中显示任何输入之前会弹出