2015-01-02 12 views
2

我试图测试,一旦页面完成完全载入页面,做一个服务器端的RSA密钥对生成,这需要5之间 - 秒20,我目前设立。在浏览器收到密钥对之前,用户不能进行任何操作。如何检测的期望是否在茉莉花失败/量角器

我已经使用browser.sleep(),但等待20秒如果在5生成密钥对是烦人。我尝试使用Protractor的evaluate()方法作为while循环条件,但是evaluate()返回一个ElementFinder而不是参数的值。有没有一种方法允许Jasmine/Protractor以相同的方式计算布尔值?Jasmine评估为Be/toEqual/etc?

总之,

expect(controller.evaluate('data.step1.done')).toBe(true); 

计算一个布尔值,相当于评价的值()的自变量在角的范围内,它比较针对‘真’。有没有办法使用该计算值或自己计算它?

+0

在浏览器端如何实现等待?最终用户是否有任何指标? – alecxe

+0

@alecxe页面内容的其余部分使用ng-class =“{blurred:!data.step1.done}”模糊不清。以及使用ng-show和相同的Angular变量的一些元素。 –

回答

2

这里的想法是使用browser.wait()等待模糊不清的内容消失:

browser.driver.wait(function() { 
    return !browser.driver.isElementPresent(by.css(".blurred")); 
}, 20000) 
.then(
    function() { 
    // success code 
    }, 
    function() { 
    // fail code 
    } 
); 

在这种情况下,它会等待高达 20秒。在模糊内容消失后,它会停止等待。

+0

如果超时,它会以毫秒为单位显示其等待的时间量,通常比超时量多20-50毫秒。当它没有超时时,是否有一种方法可以在执行该函数之前保存其执行该函数的时间量,然后将其计算为true? –

+0

@TahsisClaus请确认此选项适用于您。关于节省等待时间 - 一个非常有趣的问题 - 你能否提出一个单独的SO问题,以便其他人可以帮助或找到类似问题的解决方案?谢谢! – alecxe