使用量角器进行测试的新手,实际上是测试自动化的新手,因此希望将其发布到正确的位置。如果没有道歉,请告知。
我正在尝试测试页面上的元素,这些元素仅在响应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();
});
答案 0 :(得分:0)
一个解决方案(虽然远非理想)是在您加载时向DOM添加元素,并在完成后删除它(或添加/删除CSS类等等)。您可能有也可能没有机会这样做,具体取决于您的AJAX调用方式。
我在回答这个问题时发现了这种方法:AngularJS + Protractor wait for all ajax calls to end / full page load, before running the tests