1

我正在尝试使用 selenium IDE,但遇到了断言近似值的问题。我需要检查具有 id 的元素内的值。它是用逗号(“,”)作为分隔符的数值。

问题是我需要检查数值是否有效,容差为 0.01。

例如:

<div id="uniqueId">2,54</div>

assertText - value = 2.53

我需要上面的例子才能通过测试,如果 div si 2,52 或 2,53 中的值也可以通过。我知道我可以使用 assertEval 插入 javascript,但我在 javascript 方面不是很好,而且从我读过的内容来看,selenium 的 javascript 功能是有限的。

任何帮助将不胜感激!

4

1 回答 1

1

使用 assertEval 是个好主意。您将需要的 javascript 类似于

var numberStr = "${actualText}".replace(",", ".");
var number = parseFloat(numberStr);
var difference = Math.abs(eval(number-${expectedValue}));
(difference <= 0.01)?true:false;

我不太了解javascript,但根据这个线程,我们需要首先将小数点从','替换为'。(第一行)所以我们可以稍后将页面上找到的字符串转换为数字(第二行)。

${actualText}是一个变量,我们在其中存储从页面获取的实际值,而${expectedValue}是您需要自己定义的值。请注意,公差 (0.01) 是“硬编码”的,您可能也想用变量替换它。

现在让它更短(并且可读性更差):

(Math.abs(eval(parseFloat("${actualText}".replace(",", "."))-${expectedValue}))<=0.01)?true:false

有了 javascript,我们可以准备 Selenium 脚本:

存储文本 | id=uniqueId | 实际文本
商店 | 2.53 | 期望值
断言评估 | 上面的 JS 行格式在这里 | 真的
于 2013-08-27T21:28:36.360 回答