量角器和角度:如何测试在一个应用程序两页,一前一后? [英] Protractor and Angular: How to test two pages in an app, one after the other?

查看:121
本文介绍了量角器和角度:如何测试在一个应用程序两页,一前一后?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的角度应用程序运行在两个单独的页面量角器测试: /仪表板 /条

的复杂之处在于我必须手动登录到应用程序。

目前我有这样的设置:

  VAR LoginPage =功能(){
  ptor = protractor.getInstance();
  this.login =功能(URL){
    ptor.get(URL);
    ptor.findElement(protractor.By.model(电子邮件))的SendKeys(config.LOGIN_EMAIL)。
    ptor.findElement(protractor.By.model('密码'))的SendKeys(config.LOGIN_PASS)。
    ptor.findElement(protractor.By.tagName('按钮'))点击()。
  };
};描述(仪表板,函数(){
  的console.log('登录');
  VAR loginPage =新LoginPage();
  loginPage.login(config.DASHBOARD_URL);
  的console.log('登录');
  它('有一个标题',函数(){
    的console.log('测试仪表板1');
    标题= ptor.findElement(protractor.By.tagName(H1));
    。期待(heading.getText())toEqual(config.DASHBOARD_HEADING);
  });
});描述(文章插件',函数(){
  的console.log('登录');
  VAR loginPage =新LoginPage();
  loginPage.login(config.ARTICLE_URL);
  的console.log('登录');
  它('有一个标题',函数(){
    的console.log('测试第1条);
    标题= ptor.findElement(protractor.By.tagName(H1));
    。期待(heading.getText())toEqual(config.ARTICLES_HEADING);
  });
});

这给了我下面的输出:

 硒独立服务器开始在http://192.168.2.9:56791/wd/hub
在登录
LoginPage
登录
在登录
LoginPage
登录
测试仪表板1
Ftesting 1条

看起来好像两个描述部分并行开球。我怎么可以强制下面的事件序列,同时还构建了code以合理的方式?


  1. 加载仪表板页

  2. 请在

  3. 运行测试仪表

  4. 加载文章页面(假设我们已经登录)

  5. 运行测试条


解决方案

 描述(我的应用程序',函数(){
    beforeEach(函数(){
        登录()...
    })
    描述(仪表盘);
    描述(的文章小部件)
});

I would like to run Protractor tests on two separate pages in my Angular app: /dashboard and /articles.

The complication is that I have to log in to the app manually.

Currently I have this setup:

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);
  });
});

This gives me the following output:

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

It looks as though both the describe sections are kicking off in parallel. How can I force the following sequence of events, while still structuring the code in a sensible way?

  1. Load dashboard page
  2. Log in
  3. Run dashboard tests
  4. Load article page (Assume we are already logged in)
  5. Run article tests

解决方案

describe('my app', function(){
    beforeEach(function(){
        login()...
    })
    describe('dashboard');
    describe('the article widget')
});

这篇关于量角器和角度:如何测试在一个应用程序两页,一前一后?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆