Selenium 在webdriver.WebElement上的findElement之后调用findElement时出错(使用量角器,JS)

Selenium 在webdriver.WebElement上的findElement之后调用findElement时出错(使用量角器,JS),selenium,promise,protractor,Selenium,Promise,Protractor,我正在使用量角器(Angular JS的webdriver包装器),虽然我可以无限期地将findElement链接到单个WebElement实例,但在使用findElements后尝试链接findElement时,我会遇到一个错误 错误(堆栈跟踪在底部给出): TypeError:对象[Object]没有方法“findElement” 链接findElement: var elementPromise=browser.findElement(by.css('body')).findElement

我正在使用量角器(Angular JS的webdriver包装器),虽然我可以无限期地将
findElement
链接到单个
WebElement
实例,但在使用
findElements
后尝试链接
findElement
时,我会遇到一个错误

错误(堆栈跟踪在底部给出):

TypeError:对象[Object]没有方法“findElement”

链接findElement

var elementPromise=browser.findElement(by.css('body')).findElement(by.css('ul')).findElement(by.css('li'));
elementPromise.findElement(by.css('.icon-meter'));//不会引起错误
在findElement之后使用findElement

var arrayPromise=browser.findElement(by.css('ul')).findElements(by.css('li'));
elementPromise=arrayPromise.then(函数(elems){
返回元素[0];
});
elementPromise.findElement(by.css('.icon-meter'));//=>引起错误
带有跟踪的错误消息

TypeError: Object [object Object] has no method 'findElement'
at repl:1:16
at /home/markham/src/dataraptor-rails4/spec/node_modules/elementexplorer-convenience.js:83:19
at webdriver.promise.ControlFlow.runInNewFrame_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1598:20)
at webdriver.promise.ControlFlow.runEventLoop_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1463:8)
at wrapper [as _onTimeout] (timers.js:252:14)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

我在0.24版量角器上也遇到了同样的问题

作为一种解决方法,我将
findElement()
的所有调用替换为
element()
,将所有
findElement()的调用替换为
all()

链接元素

var-elementPromise=browser.element(by.css('body')).element(by.css('ul')).element(by.css('li'));
elementPromise.element(by.css('.icon-meter');
在findElement之后使用findElement

var arrayPromise=browser.element(by.css('ul')).all(by.css('li'));
elementPromise=arrayPromise.then(函数(elems){
返回元素[0];
});
elementPromise.element(by.css('.icon-meter');

这篇

中有关于此版本的更多详细信息。唉,答案往往是“升级”。看起来这引入了一些不向后兼容的更改。我们将不得不进行相当多的重构。