つれづれなるままに。

webテストの自動化について備忘録のつもりで書いています

SeleniumIDE UI-Element Rollup

細々と調査を続けていますが、少し進展したので記録。

SeleniumIDEの画面を見ると Rollup とか 謎の渦巻きアイコン(デビアンみたいなマーク)がありますが、これらは RollUp 機能で使用される場所です。

これは、 UI-Element と同様に user-extensions.js に Json形式で記述し 適用してゆきます。

Rollupは簡単に言うと Selenium コマンド をまとめてる機能です。

リファレンスを見ると

var manager = new RollupManager();
manager.addRollupRule({
    name: 'do_search',
    description: 'performs a search',
    args: [{
        name: 'term',
        description: 'the search term'
    }],
    commandMatchers: [{
        command: 'type',
        target: 'ui=searchPages::search_box\\(.+',
        updateArgs: function (command, args) {
            var uiSpecifier = new UISpecifier(command.target);
            args.term = uiSpecifier.args.term;
            return args;
        }
    }, {
        command: 'click.+',
        target: 'ui=searchPages::search_go\\(.+'
    }],
    getExpandedCommands: function (args) {
        var commands = [];
        var uiSpecifier = new UISpecifier(
            'searchPages', 'search_box', {
                term: args.term
            });
        commands.push({
            command: 'type',
            target: 'ui=' + uiSpecifier.toString()
        });
        commands.push({
            command: 'clickAndWait',
            target: 'ui=searchPages::search_go()'
        });
        return commands;
    }
});

とあります。(実は argsの定義が間違っており、これをそのまま使おうとするとエラーが表示されます。なので上記は一部を変更しています)

で、今日わかった所。

RollupRuleとしての実態は  getExpandedCommandsの部分(名前の通りです)

ここに、複数のコマンドを定義していきます。

で、 その上に定義している commandMatchers部分

ここは SeleniumIDEの記録モードを使用して作成したスクリプトに対してRollupRuleを反映する為の定義になります。

ゆえに、適合させるため 正規表現を使ってコマンドとターゲットの定義をしています。

定義した RollupRuleと 記録したスクリプトがある状態で、 渦巻きアイコン をクリックすると 適合する部分を

Rollupコマンドに置き換えてもよいか?という、確認ダイアログが表示され、了承すると、手動で記録したスクリプトに Rollupを適用することができます。

(実際にはコマンドが置き換えられます)

が、まだ updateArgs部分が未理解。

さらに、見ているサンプルが古いのか たとえば Indocumentオブジェクトが 関数の引数に使用されていたりしますが

どうもこれがエラーになっている模様だったりと、五里霧中状態。