gpt4 book ai didi

ruby - 与 Webdriver 相比,Watir-Webdriver 和 Capybara 是否存在性能问题?

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:07 25 4
gpt4 key购买 nike

我即将将我的测试自动化语言从 Java 更改为 Ruby(我有一份新工作,其中 Ruby 更适合技术堆栈)。

我在 Java 和 Webdriver 方面有很多经验,但可以看到 Watir 和 Capybara 等包装器在 Ruby 中的使用似乎比直接访问 Webdriver API 更多。

我对使用此类库的关注是性能。我通常会尝试将第三方网格(例如 Saucelabs)集成到我的测试框架中,但了解到 selenium 网络元素对象的缓存很重要,因为不断查找元素会对性能产生影响。

如果我使用像 Capybara 这样的库,我会失去控制缓存策略的能力吗?我之前调查过 Geb,发现该框架不断地重新创建网络元素而不是缓存,并且它在更改该行为方面显得不够灵活。

我担心这些库可以帮助您避免编写样板代码但以牺牲性能为代价是否有效?

最佳答案

长话短说

约定优于配置;使用 page-object用于缓存。


这是我对这个问题的看法。并且请将此视为较少的答案,而更多的是对讨论的回应。我想要对此答案的反馈,请随时提供。

Ruby 中的主要模式之一(它实际上来自 Rails)是 Convention over Configuration .基本思想是,当有约定时,无论是由语言还是社区决定,只要有可能,你就顺应它。对于您的情况,我建议尽可能使用社区框架。这将使其他开发人员更容易使用您的代码,并在您需要时更容易寻求帮助。

就实际缓存而言,我不太熟悉。我知道page-object gem存储元素而不是在每次使用时重新创建它们*。这似乎符合您对缓存元素的要求。无论如何,我强烈推荐这个 gem,因为它强制执行页面对象测试模型。

注意:我不确定 page-factory mixin 是否支持这种对象缓存,或者它是否会在每次使用时重新创建类。

*您可以通过查看 source code 查看元素如何存储在 page-object 中到 Element 类。

def initialize(element, platform)
@element = element

关于ruby - 与 Webdriver 相比,Watir-Webdriver 和 Capybara 是否存在性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421413/

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