量角器挂在IsPresent() - 或任何其他行动

时间:2016-02-11 16:12:32

标签: angularjs jasmine protractor

我正在努力尝试为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方法解析,或者至少是我期望发生的。

任何线索?

2 个答案:

答案 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