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

时间:2016-05-06 10:49:28

标签: angular protractor

我为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);
  });

});

由于以下原因导致失败:Failed: Cannot read property 'parentElementArrayFinder' of undefined

有人可以告诉我为什么会收到这个错误吗?我有一个页面,只有在加载后端数据时才会显示<puppet-summary>元素。这就是为什么我要检查它是否存在(它只在半秒左右后出现)。要仅在有数据显示时显示,我使用以下HTML代码:

<div *ngIf="puppetMasters.length">
    <puppet-summary></puppet-summary>
</div>

puppetMasters是一个数组,一旦加载后端的数据就会被填充。

4 个答案:

答案 0 :(得分:5)

  

browser.wait($('puppet-summary').isPresent, 1000);

“等待元素出现”应该通过内置的presenceOf Expected Condition完成:

var EC = protractor.ExpectedConditions;
var elm = $('puppet-summary');
browser.wait(EC.presenceOf(elm), 1000);

答案 1 :(得分:0)

我建议您查看此site以查找所有元素定位器,条件,... 对于元素存在,您可以看到此示例: element(locator).isPresent

答案 2 :(得分:0)

请尝试以下功能。它会等到给定的html对象出现。

browser.wait(function() {
    return element(by.css("#edudrop1")).isPresent()});

答案 3 :(得分:-1)

希望它有所帮助)

.isPresent() vs .isPresent