如何使用具有异步/等待功能的夜表?

时间:2019-04-24 15:47:53

标签: javascript reactjs unit-testing testing nightwatch.js

我使用夜视测试框架来测试<input />的某些功能,但在种族问题上失败了。

我需要测试的东西

  1. 在输入文本中添加一个值:xxxx
  2. 按下backspace 4次。
  3. 断言input的值为''

但是我发现input的值为xx

错误Expected element <#inputElement> to have value equal: "" - expected "equal ''" but got: "xx"

    "type 4 chars and use backspace to clear the input": browser => {
    searchBox.waitForElementVisible("@input")
    .click("@input")
    .setValue("@input",'xxxx');
    for (let i = 0; i < 4; i++) {
        await browser.keys(browser.Keys.BACK_SPACE);
    }
    searchbox.expect.element("@input").value.to.equal("");

    searchbox.click("@input");
 searchbox.expect.element("@input").value.to.equal("");
 browser.end(); 
},

得出结论:for循环在清除input之前执行,然后前进到断言。我用async/await尝试了相同的测试,但又遇到了相同的错误。我想念什么吗?

我用async / await进行测试,如下所示:

    "type 4 chars and use backspace to clear the input": async browser => {
    searchBox.waitForElementVisible("@input")
    .click("@input")
    .setValue("@input",'xxxx');
    for (let i = 0; i < 4; i++) {
        await browser.keys(browser.Keys.BACK_SPACE);
    }

    await searchbox.click("@input");
    await searchbox.expect.element("@input").value.to.equal("");
    await browser.end(); 
},

欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

您不需要await的第一行代码吗?

await searchBox.waitForElementVisible("@input")
.click("@input")
.setValue("@input",'xxxx');

我认为它与输入的字符同时退格四次,并且在发送最后一个退格符后输入了两个。