Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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
Python 使用selenium webdriver测试Highcharts_Python_Selenium_Highcharts - Fatal编程技术网

Python 使用selenium webdriver测试Highcharts

Python 使用selenium webdriver测试Highcharts,python,selenium,highcharts,Python,Selenium,Highcharts,我想使用Python和SeleniumWebDriver测试Highcharts图形显示JSON文件(我已经读过)数据的准确性 如何从网站上读取Highchart数据 谢谢,, Evgenyhighchart数据被转换为SVG路径,因此您必须自己解释路径。事实上,我不知道你为什么要这么做:一般来说,你可以相信第三方库会像广告中那样工作;该代码的测试应该驻留在该库中 如果您仍然想这样做,那么您必须深入Javascript来检索数据。以为例,您可以提取第一行的数据点,如下所示。这将为您提供一个字符串

我想使用Python和SeleniumWebDriver测试Highcharts图形显示JSON文件(我已经读过)数据的准确性

如何从网站上读取Highchart数据

谢谢,,
Evgeny

highchart数据被转换为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)
免责声明:我不必花时间来完全验证它,但沿着这些思路的东西应该会给你你想要的