Web前端之路

使用页面对象组织e2e测试

2017-01-23  本文已影响187人  紫诺_qiu

当我们编写e2e测试时,一个共同的模式是使用页面对象。
页面对象通过封装应用程序页面上的元素信息帮助我们使测试变得简洁。

好处

将页面元素的选择器与测试本身隔离开,这样一旦页面结构发生变化,只需要更新PageObject即可,测试部分的代码不用变动。
好的PageObject应该包含以下这些东西:

不使用页面对象的测试实例

describe('angularjs homepage', function() {
  it('should greet the named user', function() {
    browser.get('http://www.angularjs.org');
    element(by.model('yourName')).sendKeys('Julie');
    var greeting = element(by.binding('yourName'));
    expect(greeting.getText()).toEqual('Hello Julie!');
  });
});

使用页面组织对象的测试实例

  var AngularHomepage = function() {
  var nameInput = element(by.model('yourName'));
  var greeting = element(by.binding('yourName'));

  this.get = function() {
    browser.get('http://www.angularjs.org');
  };

  this.setName = function(name) {
    nameInput.sendKeys(name);
  };

  this.getGreeting = function() {
    return greeting.getText();
  };
};

describe('angularjs homepage', function() {
  it('should greet the named user', function() {
    var angularHomepage = new AngularHomepage();
    angularHomepage.get();

    angularHomepage.setName('Julie');

    expect(angularHomepage.getGreeting()).toEqual('Hello Julie!');
  });
});

从上述实例中可以发现,其实在页面对象的定义中,我们不必包含对元素的操作函数,像上述实例,只是在元素上简单的调用.sendkey(xxx)或getText(),没必要将其封装成函数,直接写反而会更加直观,看代码的人也比较容易明白。如下面的例子:

上一篇 下一篇

猜你喜欢

热点阅读