我正在努力尝试为AngularJS站点实施一些端到端测试,而通过element方法的调用返回的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()方法的调用,则测试将执行并顺利通过。如果将其保留,则会得到:
失败:WAITING量角器与页面同步超时
20秒后请参见
https://github.com/angular/protractor/blob/master/docs/fa q.md.的
尚待完成以下任务:
-$ timeout:函数(){n = null}
这对我来说没有任何意义-IsPresent()方法返回一个promise,可以由Expect方法解决,或者至少是我期望发生的事情。
有什么线索吗?
最佳答案
请尝试 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();