在Protractor中count()与长度

ale*_*cxe 8 javascript selenium angularjs selenium-webdriver protractor

根据文档,有两种方法可以获得ElementArrayFinder(element.all()调用的结果)内部有多少元素:

...数组length等于length由其找到的元素,ElementArrayFinder并且每个结果表示对元素执行操作的结果.

计算由...表示的元素数ElementArrayFinder.

这两种方法有什么区别,应该首选哪一种?

Lin*_*ham 15


$$(".myclass").length

需要解决正确获取元素长度的承诺.

// WORK
$$(".myclass").then(function(items){
  items.length;
});

// DOES NOT WORK
$$(".myclass").length; 
Run Code Online (Sandbox Code Playgroud)

$$(".myclass").count()

一个包装器,$$('.myclass').length它本身就是一个承诺,并不需要解决这样的承诺.length

$$(".myclass").count(); 
Run Code Online (Sandbox Code Playgroud)

应该首选哪一个?

除非在定位$$(".myclass").then(function(items){...})参与时有一些复杂的业务,否则items.length会提供更好的性能.否则$$(".myclass").count()应始终使用.