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

Ala*_*an2 9 javascript selenium jasmine selenium-webdriver protractor

我正在研究AngularJS量角器测试套件.我有一个看起来像这样的conf文件:

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'

.. 
Run Code Online (Sandbox Code Playgroud)

在这些.js文件中,我使用了一些我希望在所有文件中共享的函数.例如:

describe('xxx', function () {

    it('xxx', function () {
        commonFunction(123);
    });
Run Code Online (Sandbox Code Playgroud)

我想将这些常用功能放在他们自己的文件中,但我不知道如何做到这一点,以便我可以从其他javascript文件访问它们.我想我需要的是像"inport"这样的东西,我认为不存在.任何人都可以给我一些建议,我可以把这些常用函数放在哪里,以及如何从测试套件中的每个*.js文件中访问它们?

gon*_*ard 17

要重用代码,我使用页面对象模式.我将页面对象放在单独的文件和模块中.

例如,该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();
  };
}());
Run Code Online (Sandbox Code Playgroud)

我使用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');
  });
});
Run Code Online (Sandbox Code Playgroud)

  • 非常有帮助,谢谢!我烧了一大堆时间,浏览器没有使用上面的例子导航到页面,包括错误"窗口上找不到角度".当我找到这个链接时,我终于解决了:https://github.com/angular/protractor/issues/1978. (2认同)