Python 使用selenium webdriver测试Highcharts
我想使用Python和SeleniumWebDriver测试Highcharts图形显示JSON文件(我已经读过)数据的准确性 如何从网站上读取Highchart数据 谢谢,,Python 使用selenium webdriver测试Highcharts,python,selenium,highcharts,Python,Selenium,Highcharts,我想使用Python和SeleniumWebDriver测试Highcharts图形显示JSON文件(我已经读过)数据的准确性 如何从网站上读取Highchart数据 谢谢,, Evgenyhighchart数据被转换为SVG路径,因此您必须自己解释路径。事实上,我不知道你为什么要这么做:一般来说,你可以相信第三方库会像广告中那样工作;该代码的测试应该驻留在该库中 如果您仍然想这样做,那么您必须深入Javascript来检索数据。以为例,您可以提取第一行的数据点,如下所示。这将为您提供一个字符串
Evgenyhighchart数据被转换为SVG路径,因此您必须自己解释路径。事实上,我不知道你为什么要这么做:一般来说,你可以相信第三方库会像广告中那样工作;该代码的测试应该驻留在该库中 如果您仍然想这样做,那么您必须深入Javascript来检索数据。以为例,您可以提取第一行的数据点,如下所示。这将为您提供一个字符串,然后您可以对其进行解析以确定原点和数据点。将其与垂直轴的大小进行比较,应允许您计算图形所暗示的值
# Get the origin and datapoints of the first line
s = selenium.get_eval("window.jQuery('svg g.highcharts-tracker path:eq(0)')")
splitted = re.split('\s+L\s+', s)
origin = splitted[0].split(' ')[1:]
data = [p.split(' ') for p in splitted[1:]]
# Convert to floats
origin = [float(origin[1]), float(origin[2])]
data = [[float(x), float(y)] for x, y in data]
# Get the min and max y-axis value and position
min_y_val = float(selenium.get_eval( \
"window.jQuery('svg g.highcharts-axis:eq(1) text:first').text()")
max_y_val = float(selenium.get_eval( \
"window.jQuery('svg g.highcharts-axis:eq(1) text:last').text()")
min_y_pos = float(selenium.get_eval( \
"window.jQuery('svg g.highcharts-axis:eq(1) text:first').attr('y')")
max_y_pos = float(selenium.get_eval( \
"window.jQuery('svg g.highcharts-axis:eq(1) text:last').attr('y')")
# Calculate the value based on the retrieved positions
y_scale = min_y_pos - max_y_pos
y_range = max_y_val - min_y_val
y_percentage = data[0][1] * 100.0 / y_scale
value = max_y_val - (y_range * percentage)
免责声明:我不必花时间来完全验证它,但沿着这些思路的东西应该会给你你想要的