量角器,元素循环

protractor, loop of elements

我是量角器的新手。我正在做自动化测试,在我的功能文件中我要检查这个:

When('there are at least two ports loaded', function (next) { }

在我的 html 我有这个:

<div class="port-element ">
   <div class="image-loader" style="display: inline;">
      <picture> (...) </picture>

我正在尝试做一个循环来检查这个,但也许我真的不明白如何:

let port_element = element.all(by.css('port-element '));
      port_element.each(function (item) { 
        console.log('Port element count: ', item);
      });
      next();

但我不明白。

根据建议,我在步骤定义中使用了这个:

let count = await element.all(by.css('.port-element')).count();
for(let i=1;i<=count;i++)
{
  let selector = 'div.port-element div.image-loader:nth-child('+i+')');
  //selector is the element within each div to now check
}

预期(element.all(by.css('div.port-item div.image-loader')).count()).to.be.above(2)

但我现在有这个错误:

AssertionError: expected ManagedPromise::4833 {[[PromiseStatus]]: "pending"} to be a number or a date

现在我试着这样做:

let img_loader_count = element.all(by.css('div.port-element div.image-loader'));
    console.log('img loader count: ', img_loader_count.count());                  

但我在控制台上有这个: img 加载器计数:0

有 12 个 img 加载器计数,所以这是不可能的。为什么在控制台上打印 0? 有人可以帮助我吗?

谢谢。

您可以使用 count() 来检查当前页面中加载了多少 类。

我对您的代码做了一些小改动,希望对您有所帮助。

    let port_element = element.all(by.css('.port-element'));
        expect(port_element.count()).toBe(2);

我看到的唯一方法是使用 element.count() 作为循环的索引,例如:

let count = await element.all(by.css('.port-element')).count();
for(let i=1;i<=count;i++)
{
  let selector = 'div.port-element div.image-loader:nth-child('+i+')');
  //selector is the element within each div to now check
}

但是,如果您只是想检查端口元素内是否有一定数量的图像,那么您可以

expect(element.all(by.css('div.port-element div.image-loader').count()).toBe(2);

每个问题编辑:
您应该使用 expect() 而不是 console.log()。当您尝试记录这样的变量时,js 的异步特性可能会导致奇怪的事情发生,因为它没有包含在承诺中。使用 expect(img_loader_count.count()).toBe(12); 应该会给你预期的结果。如果你出于某种原因需要使用 console.log(),你必须像这样正确地排队:

element.all(by.css('div.port-element div.image-loader').count().then(function(value){
  console.log('The count is: '+value);
});

Here 是一些承诺内容的文档。