异步等待与Browser.wait方法的区别

时间:2019-06-21 12:08:29

标签: angular protractor

早上好, 我已经开始在量角器(Angular应用程序)中重构测试用例。我发现测试用例应使用async await方法编写,但我也尝试过browser.wait,我认为这与上述方法等效。这是正确的吗?在下面添加代码示例。

async function (msg) {
  await main.getMessagesFromConversation()
    .then((bodyMessage) => expect(bodyMessage).to.equal(msg));
}

与browser.wait相同

function (msg) {
  return browser.wait(main.getMessagesFromConversation()
    .then((bodyMessage) => expect(bodyMessage).to.equal(msg)), 5000);
}

1 个答案:

答案 0 :(得分:0)

没有async/awaitbrowser.wait不同。

异步/等待是一种处理诺言的JavaScript样式。量角器框架内的所有浏览器交互(以及许多其他功能)都隐藏在幕后。这是因为Protractor所依赖的webdriverJS完全是异步的。量角器使用Promise允许按更容易编写的顺序执行代码。

最初,webdriverJS提供了一个称为控制流的功能,该功能允许在后台处理所有这些承诺。由于webdriverJS版本4(我相信)已弃用,并且从量角器版本6.0+起,量角器现在使用webdriverJS 4,因此它的控制流在量角器中也已弃用。 Async/await是处理这些承诺的一种更简单,更直接的方法。

在量角器async/await中,可以替代.then.catch()。因此,对于您的示例,您只需编写以下内容即可:

async function (msg) {
  let conversationMsgs = await main.getMessagesFromConversation()
  expect(conversationMsgs).to.equal(msg));
}

browser.wait 是一个命令,用于暂停执行,直到解决了特定的承诺或条件或达到超时期限为止。通常用于等待元素出现在页面上,但也可以有许多其他用途。