在 Protractor 中测试模板?

2024-01-14

编写适用于站点中每个页面的断言的最佳方法是什么?

我正在测试网站的页脚中是否存在某个元素,因此该元素应该存在于所有页面上。

我正在考虑编写一个单独的文件来测试网站的模板元素,然后将其包含在所有规范中。不过似乎没有其他人这样做?


首先,为了编写更干净的测试并更好地了解目标站点的组成部分,请应用页面对象模式 https://code.google.com/p/selenium/wiki/PageObjects并将网页的各个部分拆分为不同的页面对象。例如,footer, header可以而且应该是单独的页面对象,可以在站点的不同网页中重复使用。

有关该主题的更多信息:

  • 使用页面对象组织测试 https://github.com/angular/protractor/blob/master/docs/page-objects.md
  • 量角器页面对象(教程,非常详细) https://github.com/Droogans/ProtractorPageObjects
  • 页面对象(马丁·福勒) http://martinfowler.com/bliki/PageObject.html
  • 使用页面对象克服量角器的缺点 http://www.thoughtworks.com/insights/blog/using-page-objects-overcome-protractors-shortcomings

据我理解这个问题,为了遵循“干”原则,你需要某种“共享”茉莉花规格,你可以定义一次并在多个测试套件中运行.

这正是通过共享行为来枯竭 Jasmine 规范 http://pivotallabs.com/drying-up-jasmine-specs-with-shared-behavior/文章正在描述。这个想法相当简单 - 在您的测试套件中定义一个函数并从其他测试套件中调用它。例子:

  • 创建一个接受上下文(页面对象)的函数,并包含页脚特定的可重用测试:

    function testFooter(footer) {
    
        describe("(shared)", function () {
    
            describe("should show footer with necessary information", function () {
                it("should show copyright", function () {
                    expect(footer.copyright.getText()).toEqual('Copyright 2014');
                });
            });
    
        });
    }
    
  • 从传递上下文 - 页脚页面对象的其他测试套件中调用该函数:

    var FooterPage = require('./footer.po.js');
    
    describe('Contacts page', function () {
        var scope = {};
    
        beforeEach(function () {
            browser.get('/contacts/');
            browser.waitForAngular();
            scope.page = new ContactsPage();
        });
    
        // other contacts page specific suites 
        // ...
    
        testFooter(new FooterPage());
    
    });
    

您可能需要调整和改进代码才能使其正常工作,但想法保持不变:定义一次并重用。传递页面对象只会使其更加干净和透明。

另请参阅:

  • 使用 Jasmine 重用测试代码的好方法是什么? https://stackoverflow.com/questions/5061512/whats-a-good-way-to-reuse-test-code-using-jasmine
  • 量角器页面对象继承 https://stackoverflow.com/questions/21466505/protractor-page-objects-inheritance
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Protractor 中测试模板? 的相关文章

随机推荐