Selenium javascript近似值

时间:2013-08-27 08:45:02

标签: javascript selenium

我正在尝试使用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功能也是有限的。

非常感谢任何帮助!

1 个答案:

答案 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