Ruby 只有一个路径元素的Watir测试Highcharts

Ruby 只有一个路径元素的Watir测试Highcharts,ruby,watir,watir-webdriver,Ruby,Watir,Watir Webdriver,当图表只有一个路径元素时,我用watir测试highcharts有一个问题。 当u悬停在图形上的直线上时,path元素的坐标会发生变化。那我怎么才能在线路上循环呢? 示例演示=实现这一点的一种方法是在图形上使用xpath。使用firefox浏览器上的Firepath插件,当您在图形中移动鼠标时,每个位置都会有不同的XPath。然后你可以做类似的事情 browser.element_by_xpath(".//*[@id='highcharts-0']/svg/g[6]/g[2]/path[2]']

当图表只有一个路径元素时,我用watir测试highcharts有一个问题。 当u悬停在图形上的直线上时,path元素的坐标会发生变化。那我怎么才能在线路上循环呢?
示例演示=

实现这一点的一种方法是在图形上使用xpath。使用firefox浏览器上的Firepath插件,当您在图形中移动鼠标时,每个位置都会有不同的XPath。然后你可以做类似的事情

browser.element_by_xpath(".//*[@id='highcharts-0']/svg/g[6]/g[2]/path[2]']").click

然后选择您需要的值。这样做,您可能无法为图形中的每个位置都提供准确的xpath,但它几乎可以满足您的需要。

您可以解析html以提取用于创建图表的数据。这假设您没有尝试实际测试图表本身(即您信任第三方库,只需要将数据用于其他目的)


@justinko我已经学会了如何循环每个路径元素来测试数据,但是当你只有一个路径元素时,你知道如何循环吗?很抱歉再次在海图上问你。感谢您根据您要测试的内容,您可以直接从html中提取数据,也可以使用jQuery直接从图表中提取数据。@JustinKo我正在尝试在您悬停在点上时测试该值。如何直接从html中提取数据?@JustinKo我花了两天时间搜索和测试。还是没有办法解决这个问题。尝试了xpath,无法获取每个点的位置。我如何循环通过这些点?watir是否有办法控制光标在图表上从右向左水平移动。您的方法不起作用,并且引用了元素\u by\u xpath。到元素(:xpath)
require 'watir-webdriver'
require 'date'      

b = Watir::Browser.new :firefox
b.goto 'http://www.highcharts.com/demo/line-time-series'
puts b.html
#Get the javascript that contains the data used to generate the chart
data_script = b.scripts.find{ |script| script.html =~ /data/ }.html

#Get the starting date from the script
point_start = /pointStart: Date.UTC\((2006), (0), (01)\)/.match(data_script)
date_start = Date.new(point_start[1].to_i, point_start[2].to_i+1, point_start[3].to_i)

#Get an array of the data values from the script
data_values = data_script.scan(/data: \[(.*?)\]/m)[0][0].gsub(/\s/, '').split(',')

#Create an array of all the dates.
#Assuming we know it is incremented by day (otherwise check the pointInterval)
dates = (date_start .. (date_start+data_values.length-1)).map do |day|
    day.strftime("%b %e, %Y").squeeze(' ')
end

#Combine the dates and values
p dates.zip(data_values)
#=> [["Jan 1, 2006", "0.8446"], ["Jan 2, 2006", "0.8445"], ... , ["Dec 30, 2008", "0.7049"], ["Dec 31, 2008", "0.7095"]]