我正在努力尝试为AngularJS网站实现一些端到端测试,我有一个问题是通过对元素的调用返回对ElementFinder上的IsPresent()方法的调用方法
可悲的是,我受到雇主的规定的约束,导致我无法在StackOverflow上发布任何代码,但基本上这就是我正在做的事情......
describe('Some feature', function () {
it('Some Scenario', function () {
browser.get(browser.baseUrl + '/#/somePage');
var ee = element(by.css('.test-comment'));
expect(ee.isPresent()).toBeTruthy();
});
});
如果我注释掉对expect()方法的调用,那么测试执行并且没有问题。如果我把它留下来,我得到:
失败:等待量角器与页面同步超时 20秒后请参阅 https://github.com/angular/protractor/blob/master/docs/fa q.md.该 以下任务尚未完成: - $ timeout:function(){n = null}
这对我没有任何意义 - IsPresent()方法返回一个promise,它由expect方法解析,或者至少是我期望发生的。
任何线索?
答案 0 :(得分:3)
请尝试browser.isElementPresent()
:
expect(browser.isElementPresent(ee)).toBeTruthy();
如果您对这些差异感到好奇,请参阅:
此外,您可以介绍"""在做出期望之前明确等待:
var EC = protractor.ExpectedConditions;
var ee = element(by.css('.test-comment'));
browser.wait(EC.presenceOf(ee), 5000);
expect(ee.isPresent()).toBeTruthy();
答案 1 :(得分:1)
.isDisplayed()
也可能对您有所帮助。
有关详细信息,请参阅What is the difference between the isPresent and isDisplayed methods。