在第二个规范的第一个测试用例中,量角器不会等待Angular

时间:2017-06-07 23:11:29

标签: javascript angularjs protractor

我运行一个启动2个规格的conf.js。这些规范中的每一个都有自己的基本URL。在第二个规范中,第一个测试用例失败,因为测试不等待Protractor。我收到这个错误:

Expected 'Hello {{yourName}}!' to equal 'Hello Robert!'.

当我修改conf.js以便只运行失败的规范时,一切都运行正常。量角器在第二个规格第一个测试用例中等待Angular。

注意:在我的规范中,我运行这个命令,我认为它可能是我需要修改以解决这个问题的那个:

beforeEach(function () {
    browser.get(browser.baseUrl);
});

关于如何解决问题的任何想法?

编辑:按照建议,这是我的conf:

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['../specs/*.js'],
  baseUrl: 'https://angularjs.org',
  framework: 'jasmine'
};

第一个测试规范,运行正常:

var donnees = require('../test-data/jeu-de-donnees-demo.js');
var using = require('jasmine-data-provider');

describe("Création d'utilisateur", function() {

beforeEach(function () {
    browser.get("http://localhost:3000");
});

using(donnees.prenoms, function (data, description) {
    it("Type de données : " + description, function () {
        var input_prenom = element(by.xpath("//input[@name='name']"));
        var input_nom = element(by.xpath("//input[@name='username']"));
        var bouton_valider = element(by.xpath("//button[contains(., 'Créer')]"));
        var nombre_lignes_avant = 0;
        input_prenom.sendKeys(data.prenom);
        input_nom.sendKeys(data.nom);
        var rows = element.all(by.xpath("//ul[contains(@class, 'users-list')]/li"));
        rows.count().then(function(count){
            nombre_lignes_avant = count;
            bouton_valider.click();
            var nombre_lignes_apres = nombre_lignes_avant + 1;
            var nouvelle_ligne = element(by.xpath("//ul[contains(@class, 'users-list')]/li[" + nombre_lignes_apres + "]"));
            expect(nouvelle_ligne.getText()).toEqual(data.prenom + " " + data.nom);
        });
    });
});
});

第二个,第一个测试用例失败:

var donnees = require('../test-data/jeu-de-donnees-demo.js');
var using = require('jasmine-data-provider');
var SiteAngularPageAccueil = require('../pages/site-angular-page-accueil.js');

describe("Suite de test de la feature qui dit bonjour", function() {

var pageAccueil = new SiteAngularPageAccueil();

beforeEach(function () {
    browser.get(browser.baseUrl);
});

using(donnees.prenoms, function (data, description) {
    it("Chaîne de type " + description, function () {
        testMessageSalutations(data.prenom);
    });
});

function testMessageSalutations(prenomSaisi, prenomVoulu){
    pageAccueil.entrerPrenom(prenomSaisi);
    var prenomAVerifier = (prenomVoulu ? prenomVoulu : prenomSaisi);
    expect(pageAccueil.message_salutations.getText()).toEqual('Hello ' + prenomAVerifier + '!');
}

});

测试数据文件......

'use strict';

module.exports = {
prenoms: {
    'ASCII': { prenom: 'aaa', nom: "eee" },
    'Caractères spéciaux français': { prenom: 'ààà', nom: "ééé" },
    'Caractères spéciaux arabes': { prenom: 'صباح الخير', nom: 'صباح الخير'},
    'Caractères spéciaux chinois': { prenom: '安', nom: '安' },
    'Script': { prenom: "<script type='text/javascript'>alert('Hoo la laaa');</script>", nom: "<img src='../' onerror=alert('Lolilolz')/>" }
},

}

最后,第二个规范中使用的页面对象:

var SiteAngularPageAccueil = function() {
    this.champ_nom = element(by.model('yourName'));
    this.message_salutations = element(by.xpath("//div[contains(@class, 'well')]//h1"));

    this.entrerPrenom = function(prenom) {
        this.champ_nom.sendKeys(prenom);
    };
};

module.exports = SiteAngularPageAccueil;

0 个答案:

没有答案