使用Angular 2 Go Protractor

时间:2016-08-24 19:10:08

标签: selenium angular protractor

我一直在使用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()似乎返回原始元素,而不是我尝试检索的大小对象。

1 个答案:

答案 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
});