9

テスト自動化言語を Java から Ruby に変更しようとしています (技術スタックにより Ruby が適合する新しい仕事があります)。

私は Java と Webdriver の経験が豊富ですが、Ruby では、Webdriver API に直接アクセスするよりも、Watir や Capybara などのラッパーを使用する方が多いようです。

このようなライブラリの使用に関する私の懸念は、パフォーマンスです。私は通常、Saucelabs などのサードパーティ グリッドをテスト フレームワークに統合しようとしますが、要素を継続的に検索するとパフォーマンスに影響を与える可能性があるため、Selenium Web 要素オブジェクトのキャッシュが重要であることを学びました。

Capybara などのライブラリを使用すると、キャッシュ戦略を制御できなくなりますか? 以前に Geb を調査したところ、フレームワークはキャッシュではなく Web 要素を継続的に再作成し、その動作を変更する際に柔軟性がないように見えました。

これらのライブラリはボイラー プレート コードの作成を回避するのに役立ちますが、パフォーマンスを犠牲にして有効であるという懸念はありますか?

4

3 に答える 3

3

大規模な比較を行っていないため、一般的なパフォーマンスについてはコメントしません (また、ベンチマークを指摘できない人を本当に信じるべきではありません)。ただし、ここにパフォーマンスのヒントがあります (ラッパーの有無にかかわらず):

内部的には、WebDriver は HTTP を使用してブラウザー (または中間サーバー) にコマンドを送信します。プロトコルはかなりおしゃべりなので、デフォルトの Net::HTTP ベースのクライアントを Keep-Alive をサポートするクライアントに切り替えることで、多くのことを得ることができます (サーバーがサポートしていると仮定します)。こうすることで、Ruby クライアントは、コマンドごとにソケットを開くのではなく、ブラウザごとに 1 つのソケットを開き、セッションの間再利用します。

net-http-persistent gem を使用するコードは次のとおりです。

require "selenium/webdriver"
require "selenium/webdriver/remote/http/persistent"

client = Selenium::WebDriver::Remote::Http::Persistent.new
driver = Selenium::WebDriver.for :remote, url: 'http://...', http_client: client
于 2014-02-02T01:47:47.537 に答える