我使用Protractor创建teste,需要点击 md-icon 标记。我使用了几个selctors:
*[ng-reflect-title="Add"]
/* Or */
#add
/* Or */
md-icon#add
在代码中我写了这样的东西:
protractor.wait(protractor.until.elementLocated(by.css('#add')), 5000).then((el: webdriver.IWebElement) => {
resolve(el.click());
});
在本地机器上一切正常但 travis-ci 有错误,找不到元素。 Link
任何帮助......
答案 0 :(得分:2)
您提供的链接中的错误显示为:Wait timed out after 5087ms
。该元素不在您提供的5秒超时范围内,因此您需要扩展它,因为您的测试似乎在CI上比本地运行速度慢。所以也许尝试10秒(甚至更长):
protractor.wait(protractor.until.elementLocated(by.css('#add')), 10000).then(...)
在这种情况下,使用隐式等待是正确的,也是一种很好的做法。就个人而言,我从来没有延长那些隐式等待的问题,因为它不是一个保证等待计时器。一旦找到该元素,测试就会立即触发,因此它更像是一个稳定性功能。