私はAngular2を初めて使用しましたが、テストする角度コンポーネントを開発していません。しかし、私はいくつかのUI(e2e)テストを書くはずですが、私は入力フィールドにテキストを入力することさえできません。Angular2 + e2eテスト - by.idを使用できません
私の問題は、 element(by.id('username')).sendKeys('test')
が機能していないということです。 (ボタン要素と同じなど)
私はそれがほんの少しだと確信していますが、私はそれが何であるかを知ることはできません。
- Proctractor:5.1.2
- クロムドライバ:58.0.3029.110
- OS:のWindows NT 6.1.7601 SP1 x86_64で
私は、次のような構成を持っています
仕様ファイル:
import { LoginPage } from './login.po';
describe('login tests', function() {
let page: LoginPage;
beforeEach(() => {
page = new LoginPage();
});
it('Demo',() => {
page.navigateTo();
page.getUsernameInput().sendKeys('test');
});
});
ページオブジェクトファイル:
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'));
}
}
HTMLテンプレート:
....
<div>
<input
id="username"
name="username"
ngModel
type="text"
placeholder="{{something}}"
autocomplete="off"
class="input-text"
required>
</div>
...
Proctractorコンフィグ
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());
}
};
ご協力いただきまして誠にありがとうございます。
編集: いずれのソリューションも私の場合は機能しませんでした。私はelement(by.id('username'));
の代わりにbrowser.driver.findElement(by.id('username'));
を使用してしまいました。なぜこれが動作しないのかまだ分かりませんので、これは不満です。誰かが私にヒントや説明を与えることができれば感謝しています。
あなたが取得しているエラーは何か?取得したエラーを追加してください。 – demouser123
エラーによって、私はテキストが挿入されないことを意味しました。しかし、コンソールにエラーメッセージは表示されません。 – Vetemi