web-dev-qa-db-ja.com

分度器テストの作成中にbrowser.sleepを使用する必要がある理由

E2Eテストでの最初の実行。私は他の人の分度器テストを消化しようとしています。

問題:browser.driver.sleepがたくさんあり、これは壊れやすいようです。

目標:browser.driver.sleepを使用しない

質問:browser.driver.sleepへのより良いアプローチは何ですか?約束のような壊れにくいもの、または私が笑について知らない何か?

var config = require('../../protractor.conf.js').config;
describe('this Homepage Body Tests', function(){
browser.driver.get(config.homepageUrl);

it("should open find a clinic page", function(){
  // page loads :: want to fix this random wait interval 
  browser.driver.sleep(2000);
  browser.ignoreSynchronization = true;

  var string = 'clinic';
  var main = '.search-large-text';
  var link = element(by.cssContainingText('.submenu li a', string));

  link.click().then(function() {
    // page reloads :: want to fix this random wait interval
    browser.driver.sleep(3000);
    var title = element(by.cssContainingText(main, string));
    expect(title.getText()).toBe(string);
  });
});
});
18
Matthew Harwood

ignoreSynchronizationがオンになっているため、waitForAngular()を使用できません。これは、角度サイトテストの場合の解決策になります。

ここでのより良い解決策は、ページ読み込みタイムアウトを設定することです

browser.manage().timeouts().pageLoadTimeout(10000);  // 10 seconds

明示的な待機とタイムアウトに関するこれらの関連スレッドも参照してください。

11
alecxe