English 中文(简体)
Protractor - Objects
  • 时间:2024-03-22 21:41:03

Protractor - Objects


Previous Page Next Page  

本章详细讨论了Protractor的物体。

What are Page Objects?

标的是一种设计模式,已广为人知,可进行电子2e测试,以加强测试维持和减少代码重复。 可将其定义为面向物体的类别,作为与您的AUT(正在测试的申请)网页的接口。 但是,在将深厚的物体分解为页面物体之前,我们必须了解自动数据交换测试的挑战以及处理这些挑战的方法。

Challenges with automated UI testing

以下是自动识别器测试的一些共同挑战:

UI Changes

在进行统一分类测试的同时,最常见的问题是统一分类制度的变化。 例如,这种情况发生的时间大部分是在纽芬兰或文本箱等。 通常会发生变化,并产生对统一分类系统测试的问题。

Lack of DSL(Domain Specific Language) support

统一分类测试的另一个问题是缺乏DSL支持。 在这个问题上,很难理解正在测试的内容。

Lots of repetition/Code duppcation

统一分类测试的下一个共同问题是,重复或编码重叠有很多。 可以在以下法典系的帮助下理解。

element(by.model(‘event.name’)).sendKeys(‘An Event’);
element(by.model(‘event.name’)).sendKeys(‘Module 3’);
element(by.model(‘event.name’));

Tough maintenance

由于上述挑战,它成为维护的先锋。 这是因为我们必须找到所有例子,以新的名称、选择名称和格式取代;其他法典。 我们还需要花费大量时间,使测试与重新预测一致。

Broken tests

技研中心测试的另一个挑战是测试中的许多失败。

Ways to Handle Challenges

我们已经看到了在评价股测试方面的一些共同挑战。 应对这些挑战的一些途径如下:

Updating References Manually

处理上述挑战的第一个选择是人工更新参考资料。 这种办法的问题是,我们必须对守则进行手工修改,并进行测试。 如果你有一、二份检测档案,但如果在某个项目中有数百份检测档案,就可以做到这一点?

Using Page Objects

处理上述挑战的另一个办法是使用页标。 页面物体基本上是一个简便的Java文本,概括了安热模块的特性。 举例来说,以下规格文件是在没有页码的情况下撰写的,有页物体可以理解差异。

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

为了与“物体”一起撰写该法典,我们需要做的第一项工作是制造“物体”。 页: 1 举例来说,上述目标可以照此办理:

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.getGreetingText = function() {
      return greeting.getText();
   };
};
module.exports = new AngularHomepage();

Using Page Objects to Organize Tests

我们已经看到,在上述例子中,使用页标语来应对国际标准化组织测试的挑战。 其次,我们将讨论如何利用这些试验组织这些试验。 为此,我们需要修改试卷,而不修改试稿的功能。

Example

为了理解这一概念,我们正在用上页标语查阅上述配置文件。 我们需要修改以下试验文字:

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

      angularHomepage.setName( Jupe );
   
      expect(angularHomepage.getGreetingText()).toEqual
      ( Hello Jupe! );
   });
});

在此,我们注意到,通往页面物体的道路与你的规格相对应。

在同一方面,我们还可以将我们的试验套同各种试验套相分离。 然后,组合文件可修改如下:

exports.config = {
   // The address of a running selenium server.
   seleniumAddress:  http://localhost:4444/wd/hub ,

   // Capabipties to be passed to the webdriver instance.
   capabipties: {
       browserName :  chrome 
   },
   // Spec patterns are relative to the location of the spec file. They may
   // include glob patterns.
   suites: {
      homepage:  tests/e2e/homepage/**/*Spec.js ,
      search: [ tests/e2e/contact_search/**/*Spec.js ,
          tests/e2e/venue_search/**/*Spec.js ]
   },

   // Options to be passed to Jasmine-node.
   jasmineNodeOpts: {
      showColors: true, // Use colors in the command pne report.
   }
};

现在,我们可以轻易地将试验转向试验。 以下指挥部门将只管理试验的主页部分——

protractor protractor.conf.js --suite homepage

同样,我们可以对指挥部门进行具体试验:

protractor protractor.conf.js --suite homepage,search
Advertisements