量角器同步与异步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了量角器同步与异步相关的知识,希望对你有一定的参考价值。

我了解茉莉/量角器你可以使用then来等待某些操作的结果。我也理解Control流程是如何工作的。

我的问题是,如果我必须使用then,所有后续操作需要在then中链接吗?或者量角器会照顾同步性吗?

我正在使用页面模型:

SomePage.prototype = Object.create({}, {
    list: { get: () => {return element.all(by.repeater("item in $ctrl.list"))}}
});

somePage.list.then((listItems) => {
    expect(list.length).toBe(1);
    element(by.css(".item-name")).getText().then((itemName) => {
        expect(itemName).toBe("test item");
    });
})

进一步测试,我做:

somePage.list.then((listItems) => { 
    ... 
})
.then(() => {
    ... more testing
});

或者我只是继续,如同步?

跟进问题:当使用页面模型时,对于触发在应用程序中触发http调用的单击事件的页面函数,他们应该return element(by.css('some-button-that-triggers-a-http')).click()还是只执行点击?

答案

如果取决于您是否需要在then中调用其他异步操作。如果是这样,你可以链接当时的。如果没有,您将继续使用'then'语句中的同步代码。

你有一个拼写错误 - 确保你打电话给列表,如:

somePage.list().then((listItems) => { 
    ... 
})

最后,确保在done()语句中调用then,以便jasmine知道测试已经完成运行。 (或者只使用es6 + async / await

以上是关于量角器同步与异步的主要内容,如果未能解决你的问题,请参考以下文章

执行量角器测试时“失败:等待量角器与页面同步时出错”

错误超时等待量角器在 11 秒后与页面同步

使用 appium 执行量角器脚本时等待异步脚本结果超时

如何不忘记再次将量角器转换为角度同步?

量角器 - 等待异步完成

量角器异步/等待 UnhandledPromiseRejectionWarning:未处理的承诺拒绝