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

Rob*_*ham 9 ruby selenium-grid capybara watir-webdriver selenium-webdriver

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

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

我对使用这样一个库的担忧是性能.我通常尝试将第三方网格(如Saucelabs)集成到我的测试框架中,但已经了解到,对于持续查找元素可能会对性能产生影响,缓存硒网元素对象非常重要.

如果我使用像Capybara这样的库,我是否会失去控制缓存策略的能力?我之前研究过Geb,发现该框架不断重新创建了webelements而不是缓存,并且在改变这种行为方面似乎缺乏灵活性.

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

Dan*_*ahn 3

长话短说

约定优于配置;使用页面对象进行缓存。


以下是我对此事的看法。请不要将此视为一个答案,而更多地视为对讨论的回应。我想要对此答案的反馈,请随时提供。

Ruby 中的主要模式之一(它实际上来自 Rails)是约定优于配置。基本思想是,当存在约定时,无论是由语言还是社区决定的,您只要有可能就遵循它。就您而言,如果可能的话,我建议使用社区框架。这将使其他开发人员更容易使用您的代码,并且在您需要时更容易寻求帮助。

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

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

*通过查看类的源代码,您可以了解Element是如何存储的。page-objectElement

def initialize(element, platform)
  @element = element
Run Code Online (Sandbox Code Playgroud)