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オブジェクトが 関数の引数に使用されていたりしますが
どうもこれがエラーになっている模様だったりと、五里霧中状態。