angularjs - Protractor 从 Promise 返回一个值

标签 angularjs coffeescript protractor

我正在编写一个测试,看看我的代码是否通过查看屏幕上保存级别计数的文本值来删除级别。

  it 'allows deleting level versions', ->
    browser.get('/api#/costings')
    element(By.id("edit")).click()
    startCount = element(By.id("versions_count")).getText().then( (count) ->
      return count
    )

    element(By.id("versions")).click()
    first=element.all(By.id("listing")).first()
    first.element(By.id("delete")).click()
    helper.accept_dialog()

    element(By.id("back")).click()
    expect(element(By.id("versions_count")).getText()).toEqual(startCount - 1)

这里的问题是函数中的 startCount 结果。我似乎无法将 startCount 转换为整数,以便我可以查看计数是否减少了 1 项。

它给了我错误;

  1) edit an existing costing allows deleting level versions
   Message:
     Expected '1' to equal NaN.

如果我尝试 parseInt(startCount) 我会得到同样的错误。

最佳答案

变量 startCount 是一个 Promise,因此 startCount - 1 没有意义:没有从 Promise 到其解析值的自动类型转换,因此你不能从中减去一。

您可以做的是创建一个 promise ,其解析值是预期的版本计数:

expectedCount = element(By.id("versions_count")).getText().then( (count) ->
  return (count - 1).toString();
)

然后您可以将此 Promise 传递给 toEqual,因为它会在控制流中的适当位置自动解开 Promise

expect(element(By.id("versions_count")).getText()).toEqual(expectedCount)

关于angularjs - Protractor 从 Promise 返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31780731/

相关文章:

c# - 带有 ASP.Net MVC RouteConfig 的 AngularJS Ui-Router。它是如何工作的?

java - 如何分别实现每个字段验证时的错误输出?

javascript - event.pageX/Y 不适用于 touchmove

javascript - 使用 Konacha/Poltergeist(和 Rails)测试点击事件

javascript - protractor.findElement() 是否意味着滚动到该元素?

html - 同一类元素的 Protractor 定位器

javascript - Ionic 显示空白页,没有任何错误

json - Angular js JSON数据与DateTime的MVC模型绑定(bind)?

JavaScript 对象属性计数限制,删除最早更新的

javascript - 无法访问变量