2011-10-03 10 views
5

Seleniumには、データ項目を一時的に保存し、その後の後続のテストでデータ項目を取得する機能があります。Seleniumを使用してテスト間に値を格納する方法

storeText | @id='ctl00_ContentPlaceHolder1_FormView1' | someValue 

これは、単一の試験の範囲内で動作し、また、同じテストスイート内のテストの間の値は、テストの境界を越えて前方に運ばれる必要があるとき。残念ながら、テストスイート間では機能しません(これは、同じオブジェクトを参照する多数のワークフローを含むアプリケーションの要件です)。 SeleniumはどのようにしてTest Suiteの境界を越えて値を格納できますか?

答えて

4

Selenium Testの値をブラウザのローカルストレージに保存するには、javascriptを使用します。この場合

getEval | this.browserbot.getUserWindow().localStorage.setItem("someValue",storedVars['someValue']) 
assertEval | this.browserbot.getUserWindow().localStorage.getItem("someValue") | ${someValue} 
storeEval | this.browserbot.getUserWindow().localStorage.getItem("assetLabel") | someValue 

this.browserbot.getUserWindow()アプリケーションのウィンドウを返す:以前に値がsomeValueのに格納されていた場合。これにより、someValueがローカルストレージに保存され、そこからSeleniumストアド変数に戻すことができます。

+0

テストスイート間でブラウザプロファイルがリセットされた場合、これは機能しますか?または、静的プロファイルを使用するようにSeleniumを設定する必要がありますか? – artbristol

+0

@artbristol:「リセット」という意味に依存します。あなたの個人情報を消去するようにFirefoxに指示すると、それは失われます。しかし、Selenium IDEは決してそれをしません。だから、一般的にはまだそこにいます。 –

+0

@Rossしかし、テストスイートを実行するたびに新しいFirefoxプロファイルでセレンが起動しないのですか?私はローカルストレージがそれを生き残れないだろうと思っていただろう。 – artbristol

0

また、Seleniumテストを実行しているコードで永続性を実装することもできます。 RCを使用している場合、これはかなり簡単です。 (つまり、挿入/更新して取得するためのまっすぐなデータベース照会)。

Seleneseを使用していて、永続性のためのAPIにアクセスできない場合は、データをデータベースに格納して後でテストを実行するために、迅速で汚れた小さなWebページを作成することもできます。明らかに、これは理想的ではありませんが、テストから永続ストアに直接アクセスできない場合は、うまくいくはずです。

+0

ありがとうございます。私は選択肢があると確信していますが、これは具体的にはSelenium IDEです。つまり、Firefoxで実行されています。ユーザーは開発者ではありません。ローカルストレージの使用は、問題が発生した場合の簡単な解決策です。 –

関連する問題