2016-10-04 86 views
1

我使用量角器创建了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()); 
}); 

在本地机器都在特拉维斯慈工作正常butn有错误未找到要素。 Link

任何帮助......

回答

2

从您提供的链接错误说:Wait timed out after 5087ms。该元素不在您提供的5秒超时范围内,所以您需要扩展该元素,因为看起来您的测试在CI上运行速度比在本地运行速度慢。所以,也许尝试10秒钟(或更长时间):

protractor.wait(protractor.until.elementLocated(by.css('#add')), 10000).then(...)

在这样的情况下,你的隐等待的使用是正确的,一个很好的做法。就我个人而言,我从来没有扩展这些隐式等待的问题,因为它不是一个有保证的等待计时器。一旦找到该元素,测试就会尽快消失,所以它更像是一个稳定性功能。

+0

哪里是所有这些'protractor.'方法的完整api?例如,我在这里的api页面上找不到'.until' http://www.protractortest.org/#/api –

+1

@ bob.mazzo语法对我来说也很奇怪,它看起来好像他正在使用[ Selenium Waits](http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp)而不是量角器。但它非常类似[预期条件](http://www.protractortest.org/#/api?view=ProtractorExpectedConditions),加上他的错误是关于超时,因此很容易查明。为了清楚起见,我总是用'browser.wait()'使用预期条件。不是像上面的语法。 – Gunderson

+0

你提供的这两个链接都为我清除它(即Selenium包含'wait.until')。非常感谢。 –