无法解释这个问题:
我的Geb / Selenium测试正在对由Highcharts生成的SVG rect
元素宽度/高度进行断言。
测试在Chrome / Windows上本地传递,并在Linux CI环境中传递PhantomJS。但是,当我在Windows上本地运行PhantomJS时,它们会失败。高度似乎是几个像素 - 一致,当我在Windows上的PhantomJS本地运行时,它大约是1或2像素。例如,我断言rect.height=168
失败,因为它是166
。
我已经确认它在两种环境中都是相同版本的PhantomJS。
我还能错过什么?什么可能导致Highcharts在Chrome和PhantomJS中生成不同的SVG?
我可以将它与测试框架隔离开来并直接与PhantomJS一起执行:
var webpage = require('webpage');
var page = webpage.create();
page.viewportSize = {width: 1280, height: 1024};
page.open("http://www.highcharts.com/demo/column-basic", function(status) {
var height = page.evaluate(function() {
return jQuery('g.highcharts-series rect:nth(0)').attr('height');
});
console.log(height);
phantom.exit();
});
此代码将在Linux上运行时打印52
,在Windows时运行53
。
答案 0 :(得分:0)
这取决于您要测试的内容,但这可能是适应舍入问题的解决方案。检测底层操作系统并使用每个操作系统的dpi更正设置配置对象。
var webpage = require('webpage'),
page = webpage.create(),
system = require('system'),
os = system.os,
correction = {
mac: 1,
windows: 1.019
};
page.viewportSize = {
width: 1280,
height: 1024
};
page.open("http://www.highcharts.com/demo/column-basic", function(status) {
var height = page.evaluate(function() {
return jQuery('g.highcharts-series rect:nth(0)').attr('height');
});
console.log(Math.round(height * correction[os.name]));
phantom.exit();
});