量角器 - 分配给 element.all.locator.count 的变量返回 NaN 为什么?
Protractor - variable assigned to element.all.locator.count is returning NaN why?
我正在使用量角器,并试图获取下拉列表中的所有元素。
我有以下内容,这部分似乎有效:
var counter = element.all(By.className('class')).count();
console.log(counter);
我预计该值为 43,但我从控制台日志中收到了这个值:
{ then: [Function: then],
cancel: [Function: cancel],
isPending: [Function: isPending] }
所以没有放弃,然后我决定看看是否可以将此值输出到我正在测试的 Web 应用程序内的搜索栏。要查看它显示的值:
element(by.className('search_bar')).sendKeys(counter);
当我再次 运行 时:
我看到搜索栏中的值变成了 43。这就是我期望计数器等于的值。
然后我继续在其他地方使用变量 'counter',并且我不断取回值:
NaN
如何让它传递实际数值 43 但作为变量。
protractor
是 WebdriverJS
的包装器,它是完全异步的并且基于承诺的概念。基本上,当您编写 protractor
测试时,请将所有内容都视为一个承诺。参见 Promises and the Control Flow。
count()
returns一个承诺。为了查看或使用实际计数值,解析它:
var counter = element.all(By.className('class')).count();
counter.then(function (value) {
element(by.className('search_bar')).sendKeys(value);
});
请注意,如果您将承诺传递给 expect()
,它只会在承诺得到解决时才会产生期望。这是因为量角器所依赖的 jasminewd
中增强了这样做。也就是说,你可以这样写:
expect(counter).toEqual(10);
让expect()
为诺言操心。
我正在使用量角器,并试图获取下拉列表中的所有元素。
我有以下内容,这部分似乎有效:
var counter = element.all(By.className('class')).count();
console.log(counter);
我预计该值为 43,但我从控制台日志中收到了这个值:
{ then: [Function: then],
cancel: [Function: cancel],
isPending: [Function: isPending] }
所以没有放弃,然后我决定看看是否可以将此值输出到我正在测试的 Web 应用程序内的搜索栏。要查看它显示的值:
element(by.className('search_bar')).sendKeys(counter);
当我再次 运行 时: 我看到搜索栏中的值变成了 43。这就是我期望计数器等于的值。
然后我继续在其他地方使用变量 'counter',并且我不断取回值:
NaN
如何让它传递实际数值 43 但作为变量。
protractor
是 WebdriverJS
的包装器,它是完全异步的并且基于承诺的概念。基本上,当您编写 protractor
测试时,请将所有内容都视为一个承诺。参见 Promises and the Control Flow。
count()
returns一个承诺。为了查看或使用实际计数值,解析它:
var counter = element.all(By.className('class')).count();
counter.then(function (value) {
element(by.className('search_bar')).sendKeys(value);
});
请注意,如果您将承诺传递给 expect()
,它只会在承诺得到解决时才会产生期望。这是因为量角器所依赖的 jasminewd
中增强了这样做。也就是说,你可以这样写:
expect(counter).toEqual(10);
让expect()
为诺言操心。