【发布时间】:2013-08-24 17:46:14
【问题描述】:
我即将将我的测试自动化语言从 Java 更改为 Ruby(我有一份新工作,让 Ruby 更适合技术堆栈)。
我在 Java 和 Webdriver 方面拥有丰富的经验,但可以看到 Watir 和 Capybara 等包装器在 Ruby 中的使用似乎比直接访问 Webdriver API 更多。
我对使用这样一个库的担忧是性能。我通常会尝试将 Saucelabs 等第 3 方网格集成到我的测试框架中,但我了解到 Selenium Web 元素对象的缓存很重要,因为不断查找元素可能会对性能产生影响。
如果我使用 Capybara 等库,我会失去控制缓存策略的能力吗?我之前调查过 Geb,发现该框架不断地重新创建 web 元素而不是缓存,而且在改变这种行为方面似乎不够灵活。
我是否担心这些库可以帮助您避免编写样板代码但以牺牲性能为代价?
【问题讨论】:
-
当你需要不断地寻找一个元素时,你能举个例子吗?我也有一个测试套件,但我认为那里没有这样的问题。
-
根据我的经验,像
el = find('#id'); el[:id].should == expected_id; el[:name].should == expected_name这样简单的事情通常会有所帮助 -
大多数时候我只想访问元素一次,所以我觉得默认情况下不需要缓存。
-
你使用页面对象模式吗?
-
不是这里写的形式 - code.google.com/p/selenium/wiki/PageObjects。我使用类似的东西。例如,我不遵循“一般不做断言”、“方法返回其他 PageObjects”、“同一操作的不同结果被建模为不同方法”等规则
标签: ruby selenium-webdriver capybara watir-webdriver selenium-grid