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

时间:2014-11-06 09:56:54

标签: protractor

使用量角器进行测试的新手,实际上是测试自动化的新手,因此希望将其发布到正确的位置。如果没有道歉,请告知。

我正在尝试测试页面上的元素,这些元素仅在响应REST调用后显示。有问题的页面有两个TABS,我点击非活动TAB,它变为活动状态,加载TAB框架,然后几秒钟(取决于返回的信息)稍后在TAB中根据信息构建图形时间轴来自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();
    }); 

1 个答案:

答案 0 :(得分:0)

一个解决方案(虽然远非理想)是在您加载时向DOM添加元素,并在完成后删除它(或添加/删除CSS类等等)。您可能有也可能没有机会这样做,具体取决于您的AJAX调用方式。

我在回答这个问题时发现了这种方法:AngularJS + Protractor wait for all ajax calls to end / full page load, before running the tests