我正在努力尝试为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();

如果您对这些差异感到好奇,请参阅:
  • In protractor, browser.isElementPresent vs element.isPresent vs element.isElementPresent


  • 另外,您可以在做出期望之前引入“显式等待的存在”:
    var EC = protractor.ExpectedConditions;
    var ee = element(by.css('.test-comment'));
    
    browser.wait(EC.presenceOf(ee), 5000);
    expect(ee.isPresent()).toBeTruthy();
    

    09-17 05:07