【问题标题】:Maximum call stack size exceeded when trying to access highcharts via selenium尝试通过 selenium 访问 highcharts 时超出最大调用堆栈大小
【发布时间】:2015-04-29 20:38:00
【问题描述】:

诚然,这个有点晦涩。我要做的是通过driver.execute_script 方法从硒驱动的chrome实例访问highchart数据并传入javascript:

driver.execute_script("return $('#chartID').highcharts().series[0].data")

Selenium 引发错误 Selenium::WebDriver::Error::UnknownError unknown error: Maximum call stack size exceeded

driver.execute_script("return $('#chartID').highcharts()")
driver.execute_script("return Highcharts.charts")

两者都返回相同的错误。

应该注意的是,这两条 javascript 行都在开发控制台中的非硒 chrome 实例中工作。

这是我正在使用的指南:http://ahumbleopinion.com/highcharts-tips-accessing-chart-object-from-container-id/

【问题讨论】:

  • 您应该创建一个 jsbin 或 jsfiddle 来重现问题。
  • 不可能,因为 selenium 脚本是 ruby​​,它运行 chrome 实例并将 javascript 传递给它执行。
  • 让我把它拼出来。 1. 创建一个 jsbin 或 jsfiddle 设置,以便当您运行一个 Ruby 脚本,该脚本将您的完整脚本的相关部分复制到此 jsbin 或 jsfiddle 时,您会得到与您在问题中报告的相同的行为。 2. 将复制问题的较小 Ruby 脚本(在上面的 1 中创建)粘贴到您的问题中。这绝不是不可能的。
  • 我不认为 jsbin/jsfiddle 在这里有帮助。假设我确实设置了一个带有指向 highcharts 库的链接的 jsfiddle,并且我有一行 ruby​​ 正在尝试执行driver.execute_script("return Highcharts"),除非您安装了 ruby​​ selenium gem 并且能够针对jsfiddle 的输出页面。我的猜测是它的大小问题,它无法处理从 execute_script 调用返回的数据的大小。至少这是我在网上能找到的。

标签: javascript google-chrome selenium highcharts


【解决方案1】:

所以基本上我解决这个问题的方法是通过对返回的数据数组 Highcharts 使用 reduce 函数来减少从 execute_script 返回的数据量。

driver.execute_script <<-js
  return Highcharts
           .charts[0]
           .series[0]
           .data
           .map(function (data) { return data.y })
js

【讨论】:

    【解决方案2】:

    Ruby 1.9.x 及更高版本使用具有自己堆栈的 VM。在 Ruby 2.0.0 及更高版本中,VM 堆栈的大小可以通过 RUBY_T​​HREAD_VM_STACK_SIZE 环境变量来控制。

    要设置环境变量,请转到系统属性 -> 高级选项卡 -> 环境变量。

    参考 How to increase stack size for a ruby app. Recursive app getting: Stack level too deep (SystemStackError)

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • 酷,下次记得。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2015-12-29
    • 2017-12-27
    • 2020-12-06
    • 2020-01-05
    • 2020-08-10
    • 1970-01-01
    相关资源
    最近更新 更多