我正在尝试使用selenium IDE,我遇到了断言近似值的问题。我需要检查带有id的元素内的值。它是以逗号(“,”)作为分隔符的数值。
问题是我需要检查数值是否有效,容差为0.01。
例如:
<div id="uniqueId">2,54</div>
assertText - value = 2.53
我需要上面的示例来传递测试,并且如果div中的值为2,52或2,53,则传递。我明白我可以使用assertEval来插入javascript,但我在javascript中也不是很好,而且从我读过的内容来看,selenium的javascript功能也是有限的。
非常感谢任何帮助!
答案 0 :(得分:1)
使用assertEval是个好主意。你需要的javascript就像是
var numberStr = "${actualText}".replace(",", ".");
var number = parseFloat(numberStr);
var difference = Math.abs(eval(number-${expectedValue}));
(difference <= 0.01)?true:false;
我不太了解javascript,但根据this thread我们需要先将','替换为'。'。 (第1行)所以我们以后可以将页面上找到的字符串转换为数字(第2行)。
${actualText}
是一个变量,我们存储从页面获取的实际值,而${expectedValue}
是您需要自己定义的值。请注意,容差(0.01)是“硬编码”,您可能也想用变量替换它。
现在缩短(并且不太可读):
(Math.abs(eval(parseFloat("${actualText}".replace(",", "."))-${expectedValue}))<=0.01)?true:false
使用javascript我们可以准备Selenium脚本:
storeText | id=uniqueId | actualText store | 2.53 | expectedValue assertEval | JS LINE FORM ABOVE GOES HERE | true