我有一个测试来检查 HTML5 范围输入的值。
return this.remote
// etc.
.findById('range')
.getAttribute("value")
.then(function(val){
expect(parseInt(val)).to.equal(2);
});
当我检查它的初始值时该值是正确的,但是如果我更改该值然后检查,它还没有被更新。我发现开发人员工具中的值也没有更新。我尝试使用
.sleep(3000)
在更改值和调用之间
.getAttribute('value')
但这似乎不是问题所在。
在此JSfiddle中,使用浏览器的开发人员工具检查 range 元素将显示标题更改,但值不会更改(即使文本框中的值已正确更改)。所以这可能是webdriver的问题,但我想知道是否有人遇到过这个问题。
这与测试未能获得更新值有关吗?我可以使用另一种方法来读取值(属性)吗?
编辑:似乎浏览器的 onchange/oninput 事件没有正确触发(类似的问题:WebDriver: Change event not fire and Why does the jquery change event not trigger when I set the value of a select using val()?),和webdriver 也可能无法做到。我是否必须添加 Jquery 作为我的测试的定义,即使我只需要使用trigger()
?还是有其他解决方案?
Edit2:我添加了一个更好的例子来说明我如何在这个新的JSfiddle中使用范围输入。我添加了加号/减号按钮,它们无法触发应该更新范围输入的值属性的更改事件(并且无法将值输入到文本框中)。