量角器变量重用效率

时间:2016-03-20 09:03:08

标签: javascript protractor

我在某处读到(我再也找不到文章了),当多次调用一个元素时,使用这样的变量会更好(花费更少的时间并使用更少的资源): / p>

var proceed = element(by.className('proceed');
browser.wait(EC.presenceOf(proceed).click()), timeout, 'no proceed found!');
browser.wait(EC.presenceOf(proceed).click()), timeout, 'no proceed found!');

而不是像这样调用元素:

browser.wait(EC.presenceOf(element(by.className('proceed')).click()), timeout, 'no proceed found!');
browser.wait(EC.presenceOf(element(by.className('proceed')).click()), timeout, 'no proceed found!');

因为在调用变量时,它只需要在DOM中搜索一次该元素,之后它将保存它以供以后使用。如果这是真的,这是如何工作的,我如何“强制”量角器搜索元素?

1 个答案:

答案 0 :(得分:0)

在量角器中,没有效率增益。量角器没有实现任何缓存策略。每当你对一个元素调用一些动作时,比如click()方法,它就会每次都找到元素。但是,当你声明变量而不是每次重复变量时,它看起来更好,并使你的测试更易于维护。

如果您感到好奇,量角器中的缓存版本将如下所示:

element(by.className('proceed')).getWebElement().then(function(proceed) {
    proceed.click().then(function() {
        console.log('clicked proceed the first time');
    }, function() {
        console.log('unable to find proceed the first time (this should not happen)');
    });
    proceed.click().then(function() {
        console.log('clicked proceed the second time (this should not happen)');
    }, function() {
        console.log('unable to find proceed the second time (stale element)');
    });
});