为什么一定要用browser.sleep而写量角器测试 [英] Why must I use browser.sleep while writing protractor tests

查看:217
本文介绍了为什么一定要用browser.sleep而写量角器测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在端到端测试,第一次运行。我试图消化别人的量角器测试。
问题:有很多 browser.driver.sleep 的,这似乎是脆弱的。
目标:不使用 browser.driver.sleep

问:什么是 browser.driver.sleep 更好的方法?类似的承诺或某事我不知道笑那么脆弱?

  VAR配置=要求('../../ protractor.conf.js')配置。
描述(本网页身体测试,函数(){
browser.driver.get(config.homepageUrl);它(应该打开找到一家诊所页面功能(){
  //页面加载::要修复这种随机等待时间
  browser.driver.sleep(2000);
  browser.ignoreSynchronization = TRUE;  VAR字符串='诊所';
  VAR主要='.search大型文本';
  VAR链接=元素(by.cssContainingText(字符串)子菜单里一个。');  link.click()。然后(函数(){
    //页面重载::要修复这种随机等待时间
    browser.driver.sleep(3000);
    VAR标题=元素(by.cssContainingText(主,字符串));
    期待(title.getText())TOBE(字符串)。
  });});
});


解决方案

由于有一个 ignoreSynchronization 开启,您不能使用 waitForAngular() ,这将是在角度现场测试的情况下的溶液中。

有一个更好的解决方案在这里将设置的页面加载超时的:

  browser.manage()超时()pageLoadTimeout(10000)。 //10秒

另见明确的等待和超时这些相关的主题:

My first run at E2E tests. I'm trying to digest someone else's protractor tests. Problem: There are a lot of browser.driver.sleep and this seems fragile. Goal: not to use browser.driver.sleep

Question: What is a better approach to browser.driver.sleep? Something less fragile like a promise or something I dont know about lol?

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);
  });



});
});

解决方案

Since there is an ignoreSynchronization turned on, you cannot use waitForAngular(), which would be a solution in case of an angular-site testing.

A better solution here would be to set a page load timeout:

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

See also these relevant threads on explicit waits and timeouts:

这篇关于为什么一定要用browser.sleep而写量角器测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆