Rubricks Project このページをアンテナに追加 RSSフィード

Rails製CMS Rubricksの開発についてつらつらと書き連ねるブログです

2006-05-25

Seleniumでグローバルな値を扱う

Seleniumにはstoreという一種の変数の仕組みがあって、

storevalue1key1
typetextElement${key1}

と書くとtextElementには'value1'という値が入る。

ただ、storeを使った場合、同一のケースでしか変数にアクセスすることができない。

どこのケースでも共通であるグローバル変数が必要になる場合どうするか。

  • storeGlobalを使う

こちらのstoreGlobalを使えばどのケースからも参照できるようになる。

storeGlobalglobal_value1global_key1

という感じに使えて便利。詳しくはリンク先参照。


  • resetを拡張する

storeGlobalは便利だがグローバル変数定義のケースを一番最初に流すという制約がついてしまう。

なので、途中からケースを流したい場合に結構不便。


そこで、storeGlobalを使うのをやめて、下記の記述をuser_extensions.jsの一番下に書いてやる。

user_extensions.js

Selenium.prototype.reset = function() {
    storedVars = new Object();
    storedVars['global_key1'] = 'global_value1'
    this.browserbot.selectWindow("null");
};

こうすると全てのケースで${global_key1}にアクセスできるようになる。

もちろん途中からのケースにも対応可能。

Shouta