2017-02-15 56 views
0

这是我在StackOverflow上的第一篇文章,所以请温和。码头集装箱中的量角器 - 等待整个页面加载

我正在用Docker容器运行一些Protractor测试。 这个测试很好地在容器外工作,但是在它里面,量角器不会等待一些Angular Ajax调用来完全填充一些div。

it('Should check first years are equal', function() { 
    var firstElementFirstYear = $$('div.cumulated div.street-table-value.ng-scope div.ng-binding.ng-scope').get(8).getInnerHtml().then(function(text) {return text.trim();}); 
    var secondElementFirstYear = $$('div.cumulated div.street-table-value.ng-binding.ng-scope').get(8).getInnerHtml().then(function(text) {return text.trim();}); 
    expect(firstElementFirstYear).toEqual(secondElementFirstYear); 
},10000); 

然后我得到一个索引值出界异常的。

我想:

  • 在beforeEach使用waitForAngular。
  • 等待一个预期的条件(计数> 9)得到满足,但它获得的元素
  • 试图找到我的元素与量角器调试工具之前得到已逾时
  • browser.sleep(4000),启动Chrome浏览器和我正确地得到我的10个元素,当我手动找到他们

但我不设法得到所需的所有元素,元素的数量保持在5,从来没有去10

什么否则我可以尝试等待Angular完成ajax调用和popula我的div?

谢谢!

+0

向我们展示有问题的代码。 – FCin

+0

这不是让protactor等待。你必须等待promise使用'then'来解析并且不使用$ httpBackend模拟服务器端? – Walfrat

+0

$$('div.someclass')。get(8);'返回一个你必须解决的承诺。所以你做'$$('div.someclass')。get(8).then(function(data){});' – FCin

回答

0

你是对的@FCin,元素实际上是隐藏的。我启动无头量角器容器时调整屏幕分辨率:

-e SCREEN_RES=1920x1080x24 

,就是这样!谢谢!