Protractor-分配给element.all.locator.count的变量返回NaN why

Protractor - variable assigned to element.all.locator.count is returning NaN why?

本文关键字:变量 返回 NaN why count locator 分配 element all Protractor-      更新时间:2023-09-26

我正在使用Protractor,并试图获取下拉列表中的所有元素。

我有以下内容,这部分似乎正在工作:

var counter = element.all(By.className('class')).count();
console.log(counter);

我本以为值是43,但我从控制台日志中收到了这个:

{ then: [Function: then],
  cancel: [Function: cancel],
  isPending: [Function: isPending] }

所以我没有放弃,然后我决定看看我是否可以将这个值输出到我正在测试的网络应用程序中的搜索栏

element(by.className('search_bar')).sendKeys(counter);

当我再次运行它时:我看到搜索栏中的值变成了43。这就是我所期望的计数器所等于的。

然后,我继续在其他地方使用变量"counter",并不断将值返回为:

NaN

我如何让它传递43的实际数值,但作为一个变量。

protractorWebdriverJS的包装器,它是完全异步的,基于promise的概念。基本上,当您编写protractor测试时,请将所有内容都视为承诺。请参见承诺和控制流。

count()返回一个承诺。为了查看或使用实际计数值,解析它

var counter = element.all(By.className('class')).count();
counter.then(function (value) {
    element(by.className('search_bar')).sendKeys(value);
});

请注意,如果将promise传递给expect(),则只有在promise得到解决时,它才会产生期望。这是因为它在量角器所依赖的jasminewd中得到了增强。换句话说,你可以写:

expect(counter).toEqual(10);

让CCD_ 7担心承诺。