我一直在使用Angular2 Go Protractor配置尝试在Angular 2上运行端到端测试。
尝试获取元素的大小时,其属性不可遍历。例如:
var myElement = element(by.css('.my-element')).getSize();
在browser.pause()
调试控制台中,将显示:
{ ceil: {},
clone: {},
floor: {},
height: 52,
round: {},
scale: {},
toString: {},
width: 612 }
但是当我尝试myElementWidth = element(by.css('.my-element')).getSize().width
时,它会以未定义的形式出现。 myElementWidth = element(by.css('.my-element')).getSize().getWidth()
同样抱怨getWidth
不是函数。执行console.log
返回的对象getSize()
似乎返回原始元素,而不是我尝试检索的大小对象。
答案 0 :(得分:4)
getSize()
因为所有特定于WebDriver的方法都会返回一个承诺。要获取实际的size
对象,请先解决承诺:
element(by.css('.my-element')).getSize().then(function (size) {
console.log(size);
console.log(size.width);
});
但是,如果你需要提出期望,expect()
能够理解承诺并明确解决它们。换句话说,你可以写:
expect(element(by.css('.my-element')).getSize()).toEqual(jasmine.objectContaining({
width: 50,
height: 20
});