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

Bla*_*ack 11 html javascript python selenium highcharts

我正在尝试使用Selenium从Highcharts图表中获取数据.我对此的问题是该setExtremes函数不起作用.options.data.setExtremes使用纯Python基础方法后如何读取数据?

我的代码:

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)
Run Code Online (Sandbox Code Playgroud)

Paw*_*Fus -1

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

(function(H) {
  H.wrap(H.Axis.prototype, 'setExtremes', function (proceed) {
    proceed.apply(this, Array.prototype.slice.call(arguments, 1);
    return this; // <-- context for chaining
  });
})(Highcharts);
Run Code Online (Sandbox Code Playgroud)

现在我们可以使用:

return window.Highcharts.charts[0].xAxis[0].setExtremes(min, max).series[0].options.data;
Run Code Online (Sandbox Code Playgroud)

注意:该代码片段可以放置在单独的文件中,并像任何其他 Highcharts 插件一样使用(只需在 Highcharts 库之后加载)。

重要的

Axis 对象仅引用绑定到该轴的系列。如果您想访问图表上的任何系列,请使用:

return window.Highcharts.charts[0].xAxis[0].setExtremes(min, max).chart.series[0].options.data;
Run Code Online (Sandbox Code Playgroud)