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

Why must I use browser.sleep while writing protractor tests

本文关键字:sleep browser 测试 量角器 为什么      更新时间:2023-09-26

我第一次参加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);
  });
});
});
由于打开了

ignoreSynchronization,因此不能使用 waitForAngular() ,这将是角度站点测试情况下的解决方案。

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

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

另请参阅有关显式等待和超时的相关线程:

  • 使用量角器在非AngularJS页面上测试登录(Leo的答案非常详细)
  • 量角器:单击按钮后如何等待页面完成?
  • 超时