我已经为内联编辑表格字段编写了一小段代码。当用户单击时,该元素被删除并在其位置input
上创建一个字段。修改完成后,该input
字段将被删除并span
创建一个具有新值的元素。让我展示一些背景代码。
点击前的html代码:
<div>
<table id='mytable'>
<thead>
...
</thead>
<tbody id='mybody'>
...
<tr class="tr-edit even" role="row">
<td>escape substitution</td>
<td>TEXT</td>
<td>4</td>
<td id="268435506">
<span class="td-span-edit">hola</span>
</td>
</tr>
...
</tbody>
</table>
</div>
点击后的html代码:
<div>
<table id='mytable'>
<thead>
...
</thead>
<tbody id='mybody'>
...
<tr class="tr-edit even" role="row">
<td>escape substitution</td>
<td>TEXT</td>
<td>4</td>
<td id="268435506">
<input class="td-input-edit" type="text" value='hola'/>
</td>
</tr>
...
</tbody>
</table>
</div>
当输入失焦blur
、或ENTER_KEY
按下时,修改后的值会发送到服务器。
另一方面,我在实习生 js 中编写了一个功能测试来模拟这种内联编辑。我的功能测试如下所示:
tdd.test('inline editing',function(){
return this.remote
.findById('268435506')
.then(function(param){
return this.parent
.moveMouseTo(param)
;
})
.click()
.clearValue()
.type('666')
.executeAsync(function(done){
promise
.then(function(){
done();
});
})
.getVisibleText()
.then(function(text){
assert.strictEqual(text,
'666',
'typed value should be stored');
})
.end()
;
)};
问题是测试失败,chrome 和 firefox 都出现异常。
- 铬合金:
InvalidElementState: invalid element state: Element must be user-editable in order to clear it
- 火狐:
UnknownError: Element must be user-editable in order to clear it.
当发生异常并且输入字段明显集中时,我有屏幕截图。所以你应该可以编辑它。我试图.clearValue()
从链中删除调用,但是正如预期的那样,断言失败了。
问题:如何测试这种内联编辑?