Je suis nouveau sur Angular2 et n'ai pas développé les composants angulaires à tester. Cependant, je suis supposé écrire quelques tests d'interface utilisateur (e2e) mais je ne suis même pas capable de saisir du texte dans un champ de saisie.Test Angular2 + e2e - Ne peut pas être utilisé by.id
Mon problème est que element(by.id('username')).sendKeys('test')
ne fonctionne pas. (Pareil avec des éléments de bouton et ainsi de suite)
Je suis sûr que c'est seulement une petite chose mais je ne suis pas capable de savoir ce que c'est.
J'ai la configuration suivante:
- Proctractor: 5.1.2
- pilote chrome: 58.0.3029.110
- OS: Windows NT 6.1.7601 SP1 x86_64
Fichier de spécifications:
import { LoginPage } from './login.po';
describe('login tests', function() {
let page: LoginPage;
beforeEach(() => {
page = new LoginPage();
});
it('Demo',() => {
page.navigateTo();
page.getUsernameInput().sendKeys('test');
});
});
page fichier objet:
import { browser, element, by } from 'protractor';
export class LoginPage {
navigateTo() {
return browser.get('/login');
}
getParagraphText() {
return element(by.class('app-root h1')).getText();
}
getUsernameInput() {
return element(by.id('username'));
}
}
Le modèle HTML:
....
<div>
<input
id="username"
name="username"
ngModel
type="text"
placeholder="{{something}}"
autocomplete="off"
class="input-text"
required>
</div>
...
Proctractor config
var SpecReporter = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 120000,
getPageTimeout: 120000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
seleniumAddress: 'http://localhost:4444/wd/hub',
baseUrl: 'http://localhost:8001',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
useAllAngular2AppRoots: true,
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e'
});
},
onPrepare: function() {
jasmine.getEnv().addReporter(new SpecReporter());
}
};
Toute aide est fortement appréciée.
EDIT: Aucune des solutions n'a fonctionné dans mon cas. J'ai fini par utiliser browser.driver.findElement(by.id('username'));
au lieu de element(by.id('username'));
Ceci est insatisfaisant parce que je ne comprends toujours pas pourquoi cela ne fonctionne pas. Je serais reconnaissant si quelqu'un pourrait me donner un indice ou une explication.
Quelle est l'erreur que vous obtenez? Veuillez ajouter l'erreur que vous obtenez. – demouser123
Par erreur, je voulais dire que le texte ne sera pas inséré. Mais je ne vois aucun message d'erreur sur la console. – Vetemi