javascript - webdriver.io 异步问题 - 单击一个元素,然后输入文本

标签 javascript selenium promise webdriver-io

我正在尝试在我的自动化测试脚本中考虑“选择的选择”。我正在使用 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/

相关文章:

javascript - 从中心向外辐射显示图像,而不是按行从左上角显示图像

javascript - 与 setInterval() 冲突的动画

javascript - 改变 react 形式但输入值不可编辑

javascript - Angular 嵌套 Promise

javascript - (旧)使用 javascript 处理的 DBF 文件

testing - Selenium 是一个很好用的测试软件吗?

java - 自定义 Selenium Java Junit4 Webdriver 导出器

Python Selenium 单击 google "I agree"按钮

jQuery,等待方法完成然后触发操作

javascript - promise 链中 promise 之间的延迟