【发布时间】: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