Jel*_*Cat 6 selenium promise protractor
我正在使用Protractor(Angular JS的webdriver包装器),虽然我可以findElement无限期地链接单个WebElement实例,但是当我尝试findElement使用findElements(复数)后链接时会出现错误.
错误 (底部给出的堆栈跟踪):
TypeError:Object [object Object]没有方法'findElement'
链接findElement:
var elementPromise = browser.findElement(by.css('body')).findElement(by.css('ul')).findElement(by.css('li'));
elementPromise.findElement(by.css('.icon-meter')); // does not raise error
Run Code Online (Sandbox Code Playgroud)
在findElements之后使用findElement:
var arrayPromise = browser.findElement(by.css('ul')).findElements(by.css('li'));
elementPromise = arrayPromise.then(function(elems) {
return elems[0];
});
elementPromise.findElement(by.css('.icon-meter')); // => raises error
Run Code Online (Sandbox Code Playgroud)
带跟踪的错误消息
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)
Run Code Online (Sandbox Code Playgroud)
gon*_*ard 16
我的量角器版本0.24也遇到了同样的问题.
作为一种变通方法,我已经取代所有调用findElement()的element(),所有findElements()通过all().
链接元素:
var elementPromise = browser.element(by.css('body')).element(by.css('ul')).element(by.css('li'));
elementPromise.element(by.css('.icon-meter'));
Run Code Online (Sandbox Code Playgroud)
在findElements之后使用findElement:
var arrayPromise = browser.element(by.css('ul')).all(by.css('li'));
elementPromise = arrayPromise.then(function(elems) {
return elems[0];
});
elementPromise.element(by.css('.icon-meter'));
Run Code Online (Sandbox Code Playgroud)
此g +帖子中有关于此版本的更多详细信息
| 归档时间: |
|
| 查看次数: |
6253 次 |
| 最近记录: |