【问题标题】:count() vs length in Protractor量角器中的计数()与长度
【发布时间】:2019-03-12 15:31:01
【问题描述】:

根据文档,有两种方法可以获取ElementArrayFinderelement.all() 调用的结果)中有多少元素:

  • $$(".myclass").length,记录在案的here

...数组中的length 等于ElementArrayFinder 找到的元素的length,每个结果代表对元素执行操作的结果。

  • $$(".myclass").count(),记录在案的here

计算ElementArrayFinder所代表的元素个数。

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

【问题讨论】:

    标签: javascript angularjs selenium selenium-webdriver protractor


    【解决方案1】:

    $$(".myclass").length

    需要解决 promise 以正确获取元素的长度。

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

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

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

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

    应该首选哪一个?

    除非在定位$$(".myclass").then(function(items){...}) 时涉及一些复杂的业务,否则items.length 将提供更好的性能。

    否则应始终使用$$(".myclass").count()

    【讨论】:

    • length 未列为 ElementArrayFinder 上的方法。它在描述和示例中,但不在方法列表中...... Count 返回一个承诺。我猜他们改变了这一点。但是为什么 ElementArrayFinder 上仍然可以使用 length 呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    相关资源
    最近更新 更多