javascript - Protractor 和 Angular : How to test two pages in an app, 一个接一个?

标签 javascript angularjs protractor

我想在我的 Angular 应用程序的两个单独页面上运行 Protractor 测试:/dashboard/articles

复杂的是我必须手动登录应用程序。

目前我有这个设置:

var LoginPage = function() {
  ptor = protractor.getInstance();
  this.login = function(url) {
    ptor.get(url);
    ptor.findElement(protractor.By.model('email')).sendKeys(config.LOGIN_EMAIL);
    ptor.findElement(protractor.By.model('password')).sendKeys(config.LOGIN_PASS);
    ptor.findElement(protractor.By.tagName('button')).click();
  };
};

describe('The dashboard', function() {
  console.log('logging in');
  var loginPage = new LoginPage();
  loginPage.login(config.DASHBOARD_URL);
  console.log('logged in');
  it('has a heading', function() {
    console.log('testing dashboard 1');
    heading = ptor.findElement(protractor.By.tagName('h1'));
    expect(heading.getText()).toEqual(config.DASHBOARD_HEADING);
  });
});

describe('The article widget', function() {
  console.log('logging in');
  var loginPage = new LoginPage();
  loginPage.login(config.ARTICLE_URL);
  console.log('logged in');
  it('has a heading', function() {
    console.log('testing article 1');
    heading = ptor.findElement(protractor.By.tagName('h1'));
    expect(heading.getText()).toEqual(config.ARTICLES_HEADING);
  });
});

这给了我以下输出:

Selenium standalone server started at http://192.168.2.9:56791/wd/hub
logging in
LoginPage
logged in
logging in
LoginPage
logged in
testing dashboard 1
Ftesting article 1

看起来这两个 describe 部分是同时开始的。我如何才能强制执行以下事件序列,同时仍以合理的方式构建代码?

  1. 加载仪表板页面
  2. 登录
  3. 运行仪表板测试
  4. 加载文章页面(假设我们已经登录)
  5. 运行文章测试

最佳答案

您可以将登录名移动到另一个文件。

然后,在您的 Protractor 配置文件中执行此操作:

exports.config = {
  specs: [
    'spec/login.js',
    'spec/dashboard_test.js',
    'spec/article_test.js'
  ],
  ...
};

登录将在其他测试之前运行

关于javascript - Protractor 和 Angular : How to test two pages in an app, 一个接一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199563/

相关文章:

javascript - 在 Action angularjs之前触发模型更新

angular - 如何检测angular2 web应用程序处于测试模式

javascript - 为所有表单元素设置属性

javascript - 类型错误 : e[h] is not a function

javascript - Angular 应用程序在 IE 中崩溃,但在开发工具打开时不会崩溃

javascript - 与 LoDash 和 AngularJS 实时同步更新

php - 准备定制下载

javascript - File.requestAllPaths,我们似乎遗漏了一些东西

javascript - 如何在 Protractor 测试中按顺序循环连续的 Action ?

angularjs - Protractor:如何测试使用 ngTagsInput 构建的元素?