我正在尝试在我的自动化测试脚本中考虑“选择的选择”。我正在使用 webdriver.io 并引用以下 API 信息: http://webdriver.io/api.html
我需要单击“a.chosen-single”,这在“chosen”世界中相当于用户单击选择。这将用户集中在文本输入上(这允许用户过滤选择选项,因此选择很酷),然后我需要模拟用户输入文本。
问题是我编写的脚本导致所有选定的选择都被单击,然后输入键。这意味着它们的文本只会输入到最终的选择输入中。
我在点击元素后插入了一个暂停()。我希望每次单击后都会发生暂停,但只有在单击最后一个元素时才会发生暂停,并且所有元素的键都在最后一起键入,以便最后一个元素的值为 'FIL12 '
this.click(container + ' a.chosen-single').then(function(){
console.log('clicked');
console.log('value', fields[selectName]);
this.pause(1000)
this.keys(fields[selectName])
//press enter to finalize selection
//.keys('\uE007')
console.log('keys pressed');
});
这是我在终端中得到的读数:
clicked
value F
keys pressed
clicked
value IL
keys pressed
clicked
value 1
keys pressed
clicked
value 2
keys pressed
我不知道如何确保在输入击键之前下一个任务不会排队。请帮忙。
最佳答案
pause
其自身返回一个 promise ,因此您应该在 pause
上调用 then
来执行 after block pause
回调已返回。
this.pause(1000).then(function() {
this.keys(fields[selectName])
//press enter to finalize selection
//.keys('\uE007')
console.log('keys pressed');
});
关于javascript - webdriver.io 异步问题 - 单击一个元素,然后输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32748611/