0

Meteor アプリで Cucumber テストの最初のセットに取り組んでいますが、ログイン手順が機能しません。私のアプリでは、このプロジェクト専用に作成したカスタム ログイン プラグインを使用しています。現在、デバッグ出力で定義されているため、これがステップです。

this.Given(/^I am logged in as a\/an "([^"]*)"$/, function(roleName, callback) {
  this.browser
    .url(url.resolve(process.env.HOST, '/'))
    .waitForExist('#appSignIn');
  this.browser.getHTML('#appSignIn', function(err, html) {
    if (err) {
      console.log('err: ', err);
    } else {
      console.log('link HTML: ', html);
    }
  });
  this.browser.getCssProperty('#appSignIn', 'display', function(err, value) {
    console.log('link HTML display: ', value);
  });
  browser.isVisible('#appSignIn', function(err, isVisible) {
      console.log('#appSignIn', isVisible);
  });
  this.browser
    .waitForVisible('#appSignIn')
    .click('#appSignIn')
    .waitForExist('#username')
    .waitForVisible('#username')
    .setValue('#username', 'test' + roleName)
    .setValue('#password', 'test' + roleName)
    .leftClick('#signin')
    .waitForExist('#appSignOut')
    .waitForVisible('#appSignOut')
    .call(callback);
});

このログに表示されているのは次のとおりです。

 Scenario:                               # features/my.feature:11
    Given The server data has been reset  # features/my.feature:12
link HTML:  <a id="appSignIn" href="/signin">Sign In</a>
link HTML display:  { property: 'display',
  value: 'block',
  parsed: { type: 'ident', string: 'block' } }
#appSignIn false
    And I am logged in as a/an "ADMIN"    # features/my.feature:13
      RuntimeError: RuntimeError
           (ScriptTimeout:28) A script did not complete before its timeout expired.
           Problem: Timed out waiting for asyncrhonous script result after 511 ms

基本的に、HTML 出力が表示されるので、要素がそこにあることがわかります。CSS が に設定されていることがわかりますdisplay: blockが、WebDriver は要素が isVisible で表示されないと報告し、同様にwaitForVisible呼び出しでタイムアウトします。「サインイン」リンクは、右上にある Bootstrap の折りたたみ可能なナビゲーション バーの一部です。

4

1 に答える 1

2

問題は単純でした。ビューポートのデフォルト サイズが小さすぎたため、Bootstrap nav 要素が折りたたまれていました。ブラウザのサイズを 1000x600 に設定すると、期待どおりに動作しました。

于 2015-04-26T20:38:38.047 に答える