等待UI文本更新

Wait for UI text to be updated

本文关键字:更新 文本 UI 等待      更新时间:2023-09-26

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

例如,

列表可以是城市伦敦纽约东京

点击伦敦将把过滤器标签从'All'更改为'1',而我们等待角控制器从api中计算出正确的文本,然后它更改为'London',在角控制器计算出正确的标签应该是什么时,这有一点延迟,而页面的其余部分则从我们的api加载更多的数据。

这个延迟导致测试在量角器失败,因为延迟只是足够长的量角器拿起'1'作为文本,而不是'伦敦',在睡眠一秒钟解决这个问题,但这个动作是通过测试执行了很多,不想每次睡觉,有没有一种方法,我可以等待一个角控制器完成或什么,所以我最终等待恰到好处的时间?

我知道protractor通常会等待angular,但我认为标签从'All'到'1'的初始变化是在欺骗protractor,让它认为它已经准备好继续了,因为它都是通过多个angular控制器和服务完成的

谢谢

可以显式地等待伦敦文本出现。几天前有人向我展示了这个方法,从那以后它一直很有用。

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);