Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何用量角器检查元素是否存在?_Angular_Protractor - Fatal编程技术网

Angular 如何用量角器检查元素是否存在?

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

我为Angular2应用程序编写了以下量角器测试:

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()});