Protractor 量角器-如何强制量角器等待REST调用返回信息以完成构建页面元素

Protractor 量角器-如何强制量角器等待REST调用返回信息以完成构建页面元素,protractor,Protractor,对于量角器测试来说是新的,实际上对于一般的测试自动化来说是新的,所以希望这篇文章贴在正确的地方。如果没有,请道歉 我正在尝试测试页面上的元素,这些元素仅在响应REST调用后显示。有问题的页面有两个选项卡,我单击非活动选项卡,它变为活动,加载选项卡框架,然后几秒钟(取决于返回的信息)之后,根据REST调用的信息在选项卡中构建一个图形时间线。 我的问题是如何让量角器在继续测试时间线中的元素之前等待REST调用完成并构建时间线 从各种搜索中,我使用以下代码。我只是在时间线上选择一个元素来检查isPre

对于量角器测试来说是新的,实际上对于一般的测试自动化来说是新的,所以希望这篇文章贴在正确的地方。如果没有,请道歉

我正在尝试测试页面上的元素,这些元素仅在响应REST调用后显示。有问题的页面有两个选项卡,我单击非活动选项卡,它变为活动,加载选项卡框架,然后几秒钟(取决于返回的信息)之后,根据REST调用的信息在选项卡中构建一个图形时间线。 我的问题是如何让量角器在继续测试时间线中的元素之前等待REST调用完成并构建时间线

从各种搜索中,我使用以下代码。我只是在时间线上选择一个元素来检查isPresent。我也尝试过使用browser.wait而不是ptor.getInstance,但是我也遇到了同样的问题,等待不是等待时间线完全加载。任何指导都将不胜感激

    it('XXXXXX', function() {
        var ptor = protractor.getInstance();

        // Define element to wait for in the Timeline Graphic
        var waitForElement = by.css('.timeline-time');  

        // Load the page    
        jobManagerPage.go();    

        // Click the inactive TAB to make active
        jobManagerPage.eleDataVisTabLiTag.click();

        // This is where I am expecting to wait for the element in the Timeline
        // to be present before continuing
        browser.wait(function() { return ptor.isElementPresent(waitForElement);
            }, 8000);       

        // Test for the Timeline element to be present - this keeps failing !!!!!
        expect(ptor.isElementPresent(waitForElement)).toBeTruthy();
    }); 
一种解决方案(虽然远不理想)是在加载时将元素添加到DOM中,并在加载完成后将其删除(或添加/删除CSS类,等等)。您可能有机会也可能没有机会这样做,这取决于AJAX调用的方式


我在回答这个问题时发现了这种方法:

你找到解决方案了吗?我对量角器还不熟悉两天,而且我也确信,由于这个确切的原因,整个框架从根本上是有缺陷的。为什么要构建一个测试框架来与Web2.0UI交互,却不能等待通过与UI交互触发的REST调用的结果???