如何使用Protractor / Selenium设置可用于测试套件的常用功能?

How can I set up common functions that are available for my test suites with Protractor / Selenium?

本文关键字:套件 测试 常用 功能 用于 Protractor 何使用 Selenium 设置      更新时间:2023-09-26

我正在做一个AngularJS量角器测试套件。我有一个像这样的配置文件:

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',
    baseUrl: 'http://127.0.0.1:17315/',
    capabilities: {
        browserName: 'chrome',
        'chromeOptions': {
            args: ['--test-type']
        }
    },
    suites: {
        login: ['LoginPage/login.js'],
        homePage: ['Homepage/homepage.js',
                   'Homepage/city_page.js',
                   'Homepage/admin_page.js'],
        adminPage: ['AdminPage/exam.js',
                    'AdminPage/location.js'
.. 

在这些。js文件中,我使用了一些我想要的函数在我所有的文件中共享。例如:

describe('xxx', function () {
    it('xxx', function () {
        commonFunction(123);
    });

我想把这些常见的函数在自己的文件,但我不知道如何做到这一点,这样我就可以使他们从其他javascript文件访问。我想我需要的是一种我认为不存在的"输入"。谁能给我一些建议,在哪里我可以把这些常见的功能,以及如何从每个*.js文件在测试套件访问它们?

为了重用代码,我使用了页面对象模式。我把page对象放在一个单独的文件和模块中。

例如,pages.js文件包含一些页面对象。

'use strict';
(function() {
  var Application = function() {
    var app = this;
    browser.get('http://localhost:9003/');
    app.login = function() {
      element(by.buttonText('login')).click();
      return new LoginPage();
    };
    var LoginPage = function() {
      var loginPage = this;
      loginPage.withCredentials = function(login, password) {
        element(by.css('.loginField')).Keys(login);
        element(by.css('.passwordField')).Keys(password);
        element(by.buttonText('login')).click();
        return new WelcomePage();
      };
    };
    var WelcomePage = function() {
      var welcomePage = this;
      welcomePage.getGreetings = function() {
        return element(by.css('.greetings')).getText();
      };
    };
  };
  module.exports = function() {
    return new Application();
  };
}());

,我在使用require的验收测试中导入它们:

'use strict';
var Application = require('./pages.js');
describe('The application', function() {
  it('should let you log into the application', function() {
    var application = new Application();
    var welcomePage = application.login().withCredentials('Jean', '!sz3sk,dz');
    expect(welcomePage.getGreetings()).toEqual('Welcome Jean');
  });
});