【问题标题】:Wait for UI text to be updated等待 UI 文本更新
【发布时间】:2015-05-27 22:22:07
【问题描述】:

作为我们应用程序的一部分,用户可以单击列表中的项目,然后更改屏幕上的数据负载,包括过滤器按钮上的文本。

例如,列表可能是城市 伦敦 纽约 东京

点击 London 将首先将过滤器标签从“All”更改为“1”,而我们等待 Angular 控制器从我们的 api 计算出正确的文本应该是什么,然后它会更改为“London”,有一个当角度控制器计算出正确的标签应该是什么并且页面的其余部分从我们的 api 加载更多数据时,这会略有延迟。

这种延迟会导致量角器中的测试失败,因为延迟时间足以让量角器将 '1' 作为文本而不是 'London',进入睡眠一秒钟解决了这个问题,但是这个动作是执行的经过大量测试并且每次都不想睡觉,有没有办法我可以等待角度控制器完成或其他什么,所以我最终等待的时间恰到好处?

我知道量角器通常会等待角度,但我认为标签从“全部”到“1”的初始更改是在欺骗量角器认为它已准备好继续,因为它全部通过多个角度控制器和服务完成

谢谢

【问题讨论】:

  • 请用一个基本示例创建一个小提琴

标签: javascript angularjs protractor


【解决方案1】:

您可以明确等待伦敦文本出现。这种方法几天前向我展示过,从那以后它非常有用。

var EC = protractor.ExpectedConditions;

// Replace below with whatever locator is appropriate for your case
var elem = element(by.xpath("//div[contains(text(), 'London')]"));

browser.wait(EC.presenceOf(elem), 5000);
expect(elem.isPresent()).toEqual(true);

【讨论】:

  • 这实际上正是我所需要的。我假设你有var ER 你的意思是var EC?一旦有机会尝试,我会立即标记为正确。
  • 哦,是的,ER 应该是 EC。不知道 R 是从哪里来的。
  • 嘿,我只是得到错误无法调用未定义的方法'presenceOf',不确定为什么。调试总是将 EC 显示为未定义我已经像这样声明它 var EC = protractor.ExpectedConditions 我猜应该可以工作,我今天早些时候也更新到最新的量角器,所以我假设它应该可以工作
  • 奇怪,我自己没遇到过:| Here's a link to expectedconditions docs 不过,希望对您有所帮助。至少尝试检查一下错别字,除此之外不知道。
  • 没关系,我把它整理好了,我之前做的量角器的更新在某个地方搞砸了,所以我再次得到它以确保它有效,所以这是我的错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 2012-03-20
  • 1970-01-01
  • 2011-12-30
  • 2017-11-22
  • 1970-01-01
相关资源
最近更新 更多