Angular 如何用量角器检查元素是否存在?
我为Angular2应用程序编写了以下量角器测试:Angular 如何用量角器检查元素是否存在?,angular,protractor,Angular,Protractor,我为Angular2应用程序编写了以下量角器测试: describe('Puppet container', () => { beforeEach(() => { browser.get('/#/puppet'); }); it('should display puppet summary', () => { browser.wait($('puppet-summary').isPresent, 1000); const subject
describe('Puppet container', () => {
beforeEach(() => {
browser.get('/#/puppet');
});
it('should display puppet summary', () => {
browser.wait($('puppet-summary').isPresent, 1000);
const subject = $('puppet-summary').isDisplayed();
const result = true;
expect(subject).toEqual(result);
});
});
它一直失败,原因如下:失败:无法读取未定义的属性“parentElementArrayFinder”
有人能告诉我为什么我会犯这个错误吗?我有一个页面,当从后端加载数据时,它只显示
元素。这就是为什么我要检查它是否存在(它仅在半秒钟左右后才出现)。为了仅在有数据显示时显示,我使用以下HTML代码:
<div *ngIf="puppetMasters.length">
<puppet-summary></puppet-summary>
</div>
puppetMasters
是一个数组,一旦从后端加载数据,它就会被填充。希望有帮助)
我建议对此进行研究,以找到所有元素定位器、条件等。。。 对于存在的元素,您可以看到以下示例:
browser.wait($('puppet-summary').isPresent,1000)代码>
“等待元素出现”应通过内置的:
请尝试以下功能。它将等待给定的html对象出现
browser.wait(function() {
return element(by.css("#edudrop1")).isPresent()});
这并不是说,browser.wait()
期望一个“函数”作为第一个参数,它将继续调用该参数,直到条件的计算结果为true或达到超时为止。browser.wait($('puppet-summary').isPresent(),1000)
换句话说,$('puppet-summary')。isPresent()
不是一个函数,而是一个结果。谢谢你的回答,@MichalSviha。我在看这篇博文:我必须同意@alecxe。browser.wait()
的第一个参数必须是一个函数。这正是我要找的。谢谢,@alecxe!
var EC = protractor.ExpectedConditions;
var elm = $('puppet-summary');
browser.wait(EC.presenceOf(elm), 1000);
browser.wait(function() {
return element(by.css("#edudrop1")).isPresent()});