1

分度器 1.8 から分度器 2.0 にアップグレードしました。it ブロックでテスト シナリオを実行する前に beforeAll (jasmine 2.0) を使用してアプリにログインすると、奇妙な動作が見られます。element.clear() への最初の呼び出しが最後に行われているようです。私はこれが起こるのを見ています:

  1. "teacher01" が usernameFld に入力されます
  2. InstitutionFld がクリアされます
  3. 「school01」はinstitutionFldに入力されます
  4. passwordFld がクリアされました
  5. passwordFld に「teacherpassword」を入力
  6. usernameFld がクリアされます
  7. loginBtn がクリックされた
  8. 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');
  });
});
4

1 に答える 1