gpt4 book ai didi

javascript - Protractor 变量重用效率

转载 作者:行者123 更新时间:2023-11-28 06:14:12 26 4
gpt4 key购买 nike

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

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 中搜索一次元素,然后将其保存以供以后使用。如果这是真的,它是如何工作的以及如何“强制” Protractor 搜索元素?

最佳答案

在 Protractor 中,没有效率增益。 Protractor 不实现任何缓存策略。每次您对元素调用某些操作(例如 click() 方法)时,它每次都会出去查找该元素。不过,当您声明变量而不是每次都重复它时,它看起来更好,并且使您的测试更易于维护。

如果您好奇, Protractor 中的缓存版本将如下所示:

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

关于javascript - Protractor 变量重用效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com