Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Python:在setExtreme之后从Highcharts读取数据_Javascript_Python_Html_Selenium_Highcharts - Fatal编程技术网

Javascript Python:在setExtreme之后从Highcharts读取数据

Javascript Python:在setExtreme之后从Highcharts读取数据,javascript,python,html,selenium,highcharts,Javascript,Python,Html,Selenium,Highcharts,我正在尝试使用Selenium从Highcharts图表中获取数据。我的问题是setextrems函数不能与.options.data一起使用。在使用纯粹基于Python的方法使用setextrems之后,如何读取数据 我的代码: capabilities = webdriver.DesiredCapabilities().FIREFOX capabilities["marionette"] = True driver = webdriver.Firefox(capabili

我正在尝试使用Selenium从Highcharts图表中获取数据。我的问题是
setextrems
函数不能与
.options.data
一起使用。在使用纯粹基于Python的方法使用
setextrems
之后,如何读取数据

我的代码:

capabilities = webdriver.DesiredCapabilities().FIREFOX
capabilities["marionette"] = True
driver = webdriver.Firefox(capabilities=capabilities, executable_path=gecko_binary_path)
driver.get(website)
time.sleep(5)

temp = driver.execute_script('return window.Highcharts.charts[0].series[0]'
                             '.xAxis[0].setExtremes(Date.UTC(2017, 0, 7), Date.UTC(2017, 0, 8))'
                             '.options.data'
                            )

data = [item for item in temp]
print(data)

问题是
setExtremes(min,max)
方法返回
undefined
,因此不能链接选项。解决方案是包装此方法并传递上下文,例如:

(功能(H){
H.wrap(H.Axis.prototype,“设置极限值”功能(继续){
apply(这个,Array.prototype.slice.call(参数,1);

返回此;//我正在尝试在Highcharts上执行您的代码
问题在于
xAxis[0]
xAxis
不是一个数组,而是一个字典,因此必须在这些
[]
中提供一个字符串值


我猜你在找

编辑
现在我看到xAxis可以是一个数组,但您很可能缺少那些
事件
,因此我的解决方案应该更改为
xAxis[0].events.setExtremes

此JS是否在浏览器中使用开发控制台工作?请使用相关的
HTML
。@JeffC否。这可能是因为操作顺序不正确,即在系列中必须调用
setExtremes
,但我已经竭尽全力了。您可以在一个ex中使用分号组合两条语句ecute脚本如下temp=driver.execute_脚本('window.Highcharts.charts[0].xAxis[0].setextrems(Date.UTC(20‌​17,0,7),Date.UTC(2017,0,8));返回窗口。Highcharts.charts[0]。系列[0]。选项。数据')这取决于绑定更改的处理方式。如果数据已经缓存,则使用@Murthi建议的两条语句。如果没有,图表可能需要请求服务器获取数据,这意味着您必须等待数据通过
执行同步脚本
刷新。请注意,您可以通过<代码>Highcharts.charts[0].userOptions.series[0].data
。我将从Python调用此函数。是否有办法通过Python执行此函数?这就是库的工作方式,因此除非使用不同的方法,否则无法在Python中修复此问题。
SeteXtrems()
返回
未定义
,因此您无法链接属性。换句话说,您有两种解决方案:拆分脚本执行或添加插件。只是为了在同一页面上:我的代码片段可以放在文件中,并作为任何其他Highcharts插件加载。
return window.Highcharts.charts[0].xAxis[0].setExtremes(min, max).series[0].options.data;
return window.Highcharts.charts[0].xAxis[0].setExtremes(min, max).chart.series[0].options.data;