分度器 1.8 から分度器 2.0 にアップグレードしました。it ブロックでテスト シナリオを実行する前に beforeAll (jasmine 2.0) を使用してアプリにログインすると、奇妙な動作が見られます。element.clear() への最初の呼び出しが最後に行われているようです。私はこれが起こるのを見ています:
- "teacher01" が usernameFld に入力されます
- InstitutionFld がクリアされます
- 「school01」はinstitutionFldに入力されます
- passwordFld がクリアされました
- passwordFld に「teacherpassword」を入力
- usernameFld がクリアされます
- loginBtn がクリックされた
- usernameFld が空白であるため、テストは失敗します
誰かが私が間違っていることを教えてもらえますか (以下のコードを参照)?
ノート:
directConnectに切り替えてみました。clear() と sendKeys() を別々の行に分割しようとしました。どちらも役に立たないようでした。
同じコードを使用して分度器 1.8.0 にロールバックすると、この問題は発生しません。usernameFld が最初にクリアされ、次にユーザー名が usernameFld に入力され、テストが正常にログインできるようになります。ログイン コードを beforeAll から "it" ブロックに移動すると、テストも期待どおりに動作します。
passwordFld は password タイプの入力であり、loginBtn は単なるボタンであることに注意してください。これは非角度 Web ページのテストです。jasmine 2.0、chrome browser 41.0.2272.101、firefox 36.0.4 を使用し、テスト スクリプトから Selenium サーバーを起動しています。
HTML:
<input type="text" name="teacherUsername" size="20" value="" tabindex="1" id="username" title="Enter your Username">
<input type="text" name="teacherInstitution" size="20" value="" tabindex="2" id="institution" title="Enter your Institution">
<input type="password" name="teacherPassword" size="20" tabindex="3" id="password" title="Enter your Password">
<button class="submit" tabindex="4" id="loginbtn">Log In</button>
conf.js:
exports.config = {
framework: 'jasmine2',
specs: ['school_spec.js']
};
テスト:
describe('Protractor 2.0', function() {
browser.ignoreSynchronization = true;
var loginBtn = element(by.id('loginbtn'));
var usernameFld = element(by.id('username'));
var institutionFld = element(by.id('institution'));
var passwordFld = element(by.id('password'));
beforeAll(function() {
browser.get('http://mypage.net/login.html');
usernameFld.clear().sendKeys('teacher01');
institutionFld.clear().sendKeys('school01');
passwordFld.clear().sendKeys('teacherpassword');
loginBtn.click();
});
it('should work with beforeAll', function() {
expect(browser.getTitle()).toEqual('My Classes');
});
});