- Protractor - Discussion
- Protractor - Useful Resources
- Protractor - Quick Guide
- Protractor - Style Guide for Protractor
- Protractor - Debugging
- Protractor - Objects
- Protractor - Core APIs(Contd..)
- Protractor - Core APIs
- Protractor - Writing the First Test
- Protractor and Selenium Server
- Protractor - Getting Started
- Concepts of Javascript Testing
- Protractor - Introduction
- Protractor - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Protractor - Objects
本章详细讨论了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,searchAdvertisements