【问题标题】:Protractor hanging on IsPresent() -- Or any other Action量角器挂在 IsPresent() -- 或任何其他操作
【发布时间】:2016-02-11 16:12:31
【问题描述】:

我正在努力尝试为 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() 方法的调用,那么测试就会执行并顺利通过。如果我把它留在里面,我会得到:

失败:等待 Protractor 与页面同步超时 20 秒后。请参见 https://github.com/angular/protractor/blob/master/docs/faq.md。这 以下任务待处理: - $timeout: function (){n=null}

这对我来说没有任何意义 - IsPresent() 方法返回一个承诺,该承诺由 expect 方法解决,或者至少这是我所期望的。

有什么线索吗?

【问题讨论】:

    标签: angularjs jasmine protractor


    【解决方案1】:

    改用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();
    

    【讨论】:

    • @MartinMilan 好的,更新了一个选项,希望这个有帮助。
    • 遗憾的是没有 - 仍然遇到同样的问题......我真的开始怀疑我的环境 - 我的意思是这个测试几乎不是火箭科学......
    • @MartinMilan 在这里也一样。请从头开始重新安装量角器。你在用茉莉花2吗?哪个量角器版本?谢谢。
    • 我现在必须离开办公室去坐火车,但我回家后会检查这两项。顺便说一句,感谢您的帮助 - 非常感谢,
    • @MartinMilan 有效点 :) 你试过玩ignoreSynchronization 标志吗? (我知道这是一个正在测试的 Angular 应用,但请尝试)
    【解决方案2】:

    .isDisplayed() 也可能对您有所帮助。

    请参阅What is the difference between the isPresent and isDisplayed methods 了解更多信息。

    【讨论】:

    • 如果一个元素没有通过 isPresent() 检查,那么它不能/不会通过 isDisplayed() 检查。
    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2022-06-15
    相关资源
    最近更新 更多