Seleniumでグローバルな値を扱う
Seleniumにはstoreという一種の変数の仕組みがあって、
store | value1 | key1 |
type | textElement | ${key1} |
と書くとtextElementには'value1'という値が入る。
ただ、storeを使った場合、同一のケースでしか変数にアクセスすることができない。
どこのケースでも共通であるグローバル変数が必要になる場合どうするか。
- storeGlobalを使う
こちらのstoreGlobalを使えばどのケースからも参照できるようになる。
storeGlobal | global_value1 | global_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