必要な情報を分割して質問にお答えします
私が必要としているのは、特定の環境 (ie6-on-xp、ie7-on-xp など) をテストに提供することです。
同じマシン上に複数の IE インスタンスを持つことはできないため、それを可能にするアプリがあることは知っていますが、私の経験では、それらを解決するよりも多くの問題を引き起こします。理想的には、異なるマシンでテストを実行する必要があります。これを行うことで、開発者が特定のインスタンスでテストをターゲットにできるため、使用するセレン ファームもセットアップされます。したがって、グリッドをインフラストラクチャとして設定することは良いステップです。
私が読んでいるものについては、grid_configuration.yml のブラウザー行は、実行している MSIE または Firefox のバージョンを参照していません。そのため、特定のブラウザーとそれらを実行するためのパスが必要であることをどの形式で Grid/RC に伝えることができるかについて頭を悩ませることはできません (どの exe を実行するかを RC がどのように認識するのでしょうか?)
YAML は、グリッドが処理できることを知らせるだけです。グリッドを起動するときは、同様の構成を渡すようにする必要があります。Se:GRID を Se:RC と同じように考えてください。ただし、RC サーバーがどこにあるかは気にしないでください。残りの作業は中央の場所で行うためです。
特定のアイテムに対してテストを実行する必要がある場合は、テスト セットアップでこれを処理する必要があります。すべてのテストがすべてのブラウザーで同じように実行されるという一般的な誤解があります。これは、テストで XPath セレクターまたは CSS セレクターにまったく依存しない場合に発生します。これは、ブラウザーがこれを常にわずかに異なる方法で処理し、わずかな違いが不安定なテストにつながる可能性があるためです。これは常に回避する必要があります。
テストに使用するブラウザーを指定する 1 つの方法は、中央の構成ファイルを用意することです。C# では、これは、各ブラウザーのコレクションを持つ app.config を使用して実行します。
設定
<Firefox>
<addKey browserVersion='3.5.6' OS='WindowsXP'>
</Firefox>
1 つの要素の内部を調べる中央構成クラス
public class BoothElement : ConfigurationElement
{
[ConfigurationProperty("browserVersion", DefaultValue = "", IsKey = true, IsRequired = true)]
public string browserVersion
{
get
{
return ((string)(base["browserVersion"]));
}
set
{
base["browserVersion"] = value;
}
}
テスト
selenium = new DefaultSelenium(HubPort, HubPort, browserVersion, SUTServer);
selenium.Open("/test.htm");
//Rest of the test
Pythonでは、すべてのテストに含めるモジュールに配列を作成できます
include.py
hubServer = 'hub'
hubPort = 5555
sut = 'http://serverUnderTest'
firefox = [hubServer,hubPort,"\*chrome",sut]
iexplore = [hubServer,hubPort,"\*iehta",sut]
test.py
sel = selenium(firefox)
sel.open("/test.html")
#rest of the test
Selenium Grid を使用するときは、それをテスト インフラストラクチャのヘルプ フレームワークとして考えてみてください。うまくいけば、それがもう少し役立つことを願っています。
2 つ目は、これらのブラウザーのポータブル バージョンを実行したいということです。テストで指定されているのを見ただけで、それらを実行するための RC のコマンド ラインでは見たことがありません。それは、テストごとにそれを行う方法ですか?
私は Selenium をモバイル ブラウザーで動作させようとしたことは一度もありませんし、うまく動作するとは思いませんが、現在アルファ版の Selenium 2 では、アプリをテストするための Android サポートがあります。
コメントから編集
- name: "Firefox on OS X"
browser: "*firefox"
- name: "Firefox on Linux"
browser: "*firefox"
- name: "IE on Windows"
browser: "*iehta"
- name: "Safari on OS X"
browser: "*safari"
上記のセットアップがあるとします。YAML ファイルによると、多数の異なる *firefox インスタンスがあります。したがって、テストでこれらの異なるものを呼び出すには、ブラウザーのセットアップ コマンドは次のようになります。
selenium.Start(hubHost, hubPort, "Firefox on Linux", "http://serverUnderTest");
またselenium.Start(hubHost, hubPort, "Firefox on OS X", "http://serverUnderTest");
ハブはそれを *firefox に変換します。私は、通常の *firefox ではなく、環境に非常に細かい名前を付けることを好みます。これにより、障害が発生した場合に、それがどこにあり、どの特定のブラウザーであったかを簡単に見つけることができます。