为什么我必须在编写量角器测试时使用browser.sleep

时间:2014-12-02 02:08:19

标签: javascript angularjs selenium selenium-webdriver protractor

我第一次参加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);
  });
});
});

1 个答案:

答案 0 :(得分:11)

由于启用了ignoreSynchronization,因此您无法使用waitForAngular(),这可以作为角点测试的解决方案。

这里更好的解决方案是设置页面加载超时

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

在明确的等待和超时上另见这些相关的线程:

相关问题